SlideShare a Scribd company logo
1 of 203
Concurrency
the Good, the Bad and the Ugly
Dr. Roland Kuhn
Akka Tech Lead
Lgd. Viktor Klang
Director of Engineering
Concurrency
wat?
Characteristics
Compartmentalization
Characteristics
Compartmentalization
Coordination
Characteristics
Compartmentalization
Coordination
Execution
Characteristics
Compartmentalization
ExecutionCoordination
Characteristics
Characteristics
Characteristics
Good
UglyBad
Characteristics
Good
UglyBad ☓
Threads
… and locks
The Good
The Good
✓Can be mapped onto CPUs
The Good
✓Can be mapped onto CPUs
✓"To the metal" — no overhead
The Good
✓Can be mapped onto CPUs
✓"To the metal" — no overhead
✓High degree of control
The Good
✓Can be mapped onto CPUs
✓"To the metal" — no overhead
✓High degree of control
✓Debugging
The Bad
The Bad
☣Heavyweight
The Bad
☣Heavyweight
☣Scarce
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
☣High wake-up latency
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
☣High wake-up latency
☣Barebones / low-level
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
☣High wake-up latency
☣Barebones / low-level
☣No means of recovery
The Ugly
The Ugly
Is it threadsafe?
The Ugly
Is it threadsafe?
— Too coarse locks?
The Ugly
Is it threadsafe?
— Too coarse locks?
— The right locks?
The Ugly
Is it threadsafe?
— Too coarse locks?
— The right locks?
— The right locking order?
The Ugly
Is it threadsafe?
— Too coarse locks?
— The right locks?
— The right locking order?
Defensive error handling
The Ugly
Is it threadsafe?
— Too coarse locks?
— The right locks?
— The right locking order?
Defensive error handling
Do you understand JSR133?
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Thread + Locks
EventLoop
… or Executor
The Good
The Good
✓Configurable execution
The Good
✓Configurable execution
✓M:N task to thread ratio
The Good
✓Configurable execution
✓M:N task to thread ratio
✓Less JMM headache
The Bad
The Bad
☣How to handle errors?
The Bad
☣How to handle errors?
☣Dealing with blocking code
The Bad
☣How to handle errors?
☣Dealing with blocking code
☣Closing over mutable state
The Ugly
The Ugly
Callback Hell
The Ugly
Callback Hell
Composing results
The Ugly
Callback Hell
Composing results
Low reusability
The Ugly
Callback Hell
Composing results
Low reusability
Is it sync or async?
The Ugly
Callback Hell
Composing results
Low reusability
Is it sync or async?
Debugging
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Executor
STM
Software Transactional Memory
The Good
The Good
✓Typesafe & non-blocking
The Good
✓Typesafe & non-blocking
✓Transactional
The Good
✓Typesafe & non-blocking
✓Transactional
✓Composable
The Bad
The Bad
☣Size to failure ratio
The Bad
☣Size to failure ratio
☣Retries are costly
The Ugly
The Ugly
Dealing with side-effects
The Ugly
Dealing with side-effects
Dealing with failure
The Ugly
Dealing with side-effects
Dealing with failure
Unpredictable performance
The Ugly
Dealing with side-effects
Dealing with failure
Unpredictable performance
Debugging
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
STM
Conclusion
Java Future
… and ExecutorService
The Good
The Good
✓Configurable execution
The Good
✓Configurable execution
✓Typesafe
The Bad
The Bad
☣Blocking composition
The Bad
☣Blocking composition
☣Guesstimation of deadlock
The Bad
☣Blocking composition
☣Guesstimation of deadlock
☣Futures are one-off
The Ugly
The Ugly
Cancel other's Futures?
The Ugly
Cancel other's Futures?
Non-blocking requires polling
The Ugly
Cancel other's Futures?
Non-blocking requires polling
Dealing with failure
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Java Future
Conclusion
Scala Future
… with ExecutionContext
The Good
The Good
✓Typesafe
The Good
✓Typesafe
✓Non-blocking composition
The Good
✓Typesafe
✓Non-blocking composition
✓Monadic
The Good
✓Typesafe
✓Non-blocking composition
✓Monadic
✓Freely sharable
The Good
✓Typesafe
✓Non-blocking composition
✓Monadic
✓Freely sharable
✓Can recover from failure
The Bad
The Bad
☣Defers failures to downstream
The Bad
☣Defers failures to downstream
☣Closing over mutable state
The Bad
☣Defers failures to downstream
☣Closing over mutable state
☣No ordering of callbacks
The Bad
☣Defers failures to downstream
☣Closing over mutable state
☣No ordering of callbacks
☣Futures are one-off
The Ugly
The Ugly
Callback Hell (use for instead)
The Ugly
Callback Hell (use for instead)
Debugging
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Scala Future
Akka Dataflow
The Good
The Good
✓Typesafe
The Good
✓Typesafe
✓Non-blocking composition
The Good
✓Typesafe
✓Non-blocking composition
✓Declarative using direct style
The Good
✓Typesafe
✓Non-blocking composition
✓Declarative using direct style
✓Deterministic
The Good
✓Typesafe
✓Non-blocking composition
✓Declarative using direct style
✓Deterministic
✓Non-local composition
The Bad
The Bad
☣CPS plugin error messages
The Bad
☣CPS plugin error messages
☣Limited applicability
The Bad
☣CPS plugin error messages
☣Limited applicability
— Error handling
The Bad
☣CPS plugin error messages
☣Limited applicability
— Error handling
☣Debugging
The Bad
☣CPS plugin error messages
☣Limited applicability
— Error handling
☣Debugging
☣Futures are one-off
The Ugly
The Ugly
CPS plugin error messages!!
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Dataflow
Scala Async
The Good
The Good
✓Typesafe
The Good
✓Typesafe
✓Non-blocking composition
The Good
✓Typesafe
✓Non-blocking composition
✓Declarative using direct style
The Bad
The Bad
☣Limited applicability
The Bad
☣Limited applicability
☣Debugging
The Bad
☣Limited applicability
☣Debugging
☣Futures are one-off
The Ugly
The Ugly
Error handling
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Async
Threads
… and Queues
The Good
The Good
✓Typesafe
The Good
✓Typesafe
✓Blocking or Non-blocking
The Good
✓Typesafe
✓Blocking or Non-blocking
✓Back pressure possible
The Bad
The Bad
☣Heavyweight
The Bad
☣Heavyweight
☣Scarce
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
☣High wake-up latency
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
☣High wake-up latency
☣Not really high-level
The Bad
☣Heavyweight
☣Scarce
☣Diminishing returns
☣High wake-up latency
☣Not really high-level
☣No means of recovery
The Ugly
The Ugly
Propagating failure
The Ugly
Propagating failure
Unidirectional
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Thread + Queue
Actors
The Good
The Good
✓Encapsulation
The Good
✓Encapsulation
✓Supervision
The Good
✓Encapsulation
✓Supervision
✓Configurable execution
The Good
✓Encapsulation
✓Supervision
✓Configurable execution
✓Location transparency
The Good
✓Encapsulation
✓Supervision
✓Configurable execution
✓Location transparency
✓Models real-world
The Good
✓Encapsulation
✓Supervision
✓Configurable execution
✓Location transparency
✓Models real-world
✓Require less guarantees
The Bad
The Bad
☣Untyped
The Bad
☣Untyped
☣Explicit lifecycle management
The Bad
☣Untyped
☣Explicit lifecycle management
☣Debugging
The Ugly
The Ugly
Easy encapsulation violation
The Ugly
Easy encapsulation violation
Composition can be awkward
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Actors
Rx & friends
The Good
The Good
✓Typesafe
The Good
✓Typesafe
✓Non-blocking composition
The Good
✓Typesafe
✓Non-blocking composition
✓Reusable components
The Good
✓Typesafe
✓Non-blocking composition
✓Reusable components
✓Stream centric
The Bad
The Bad
☣Defers failures to downstream
The Bad
☣Defers failures to downstream
☣Explicit lifecycle management
The Bad
☣Defers failures to downstream
☣Explicit lifecycle management
☣"Glitches"
The Bad
☣Defers failures to downstream
☣Explicit lifecycle management
☣"Glitches"
☣Debugging
The Ugly
The Ugly
Callback Limbo
The Ugly
Callback Limbo
Inverted control flow
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
Rx
Functional Reactive
Programming
The Good
The Good
✓Typesafe
The Good
✓Typesafe
✓Declarative value composition
The Good
✓Typesafe
✓Declarative value composition
✓Direct style
The Good
✓Typesafe
✓Declarative value composition
✓Direct style
✓Deterministic
The Bad
The Bad
☣Single-threaded
The Ugly
The Ugly
Side-effecting can introduce
glitches
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
Conclusion
FRP
Summary
60
Compartmentalization
ExecutionCoordination
Conclusion
Compartmentalization
ExecutionCoordination
STM
Conclusion
Compartmentalization
ExecutionCoordination
STM
Conclusion
Scala Future
Compartmentalization
ExecutionCoordination
STM
Conclusion
Scala Future
FRP
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
Dataflow & Async & Rx
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
Dataflow & Async & Rx
Thread + Queue
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
Dataflow & Async & Rx
Thread + Queue
Executor
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
Dataflow & Async & Rx
Thread + Queue
Executor
Thread + Locks
Conclusion
Conclusion
Pick
Conclusion
Pick
your
Conclusion
Pick
your
☠
E0F

More Related Content

Viewers also liked

IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...In-Memory Computing Summit
 
Java concurrency - Thread pools
Java concurrency - Thread poolsJava concurrency - Thread pools
Java concurrency - Thread poolsmaksym220889
 
The Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldThe Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldKonrad Malawski
 
Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...
Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...
Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...Helena Edelson
 
Purely Functional Data Structures in Scala
Purely Functional Data Structures in ScalaPurely Functional Data Structures in Scala
Purely Functional Data Structures in ScalaVladimir Kostyukov
 
NewSQL overview, Feb 2015
NewSQL overview, Feb 2015NewSQL overview, Feb 2015
NewSQL overview, Feb 2015Ivan Glushkov
 
The Newest in Session Types
The Newest in Session TypesThe Newest in Session Types
The Newest in Session TypesRoland Kuhn
 
Scala Days San Francisco
Scala Days San FranciscoScala Days San Francisco
Scala Days San FranciscoMartin Odersky
 
Espresso: LinkedIn's Distributed Data Serving Platform (Paper)
Espresso: LinkedIn's Distributed Data Serving Platform (Paper)Espresso: LinkedIn's Distributed Data Serving Platform (Paper)
Espresso: LinkedIn's Distributed Data Serving Platform (Paper)Amy W. Tang
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Scott Wlaschin
 
Paper 9,modernist literature
Paper 9,modernist literaturePaper 9,modernist literature
Paper 9,modernist literatureVibhuti Bhatt
 
Vishvas resume template-7
Vishvas resume template-7Vishvas resume template-7
Vishvas resume template-7vishvasyadav45
 
Aesthetics of Touch: Desform Conference
Aesthetics of Touch: Desform ConferenceAesthetics of Touch: Desform Conference
Aesthetics of Touch: Desform ConferenceVicky Teinaki
 
Comercial sap
Comercial sapComercial sap
Comercial sapalavro005
 
2011 Meet the Parents Session - 3NT (Year End)
2011 Meet the Parents Session - 3NT (Year End)2011 Meet the Parents Session - 3NT (Year End)
2011 Meet the Parents Session - 3NT (Year End)damaisec
 

Viewers also liked (18)

Why Spark?
Why Spark?Why Spark?
Why Spark?
 
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
IMCSummit 2015 - Day 2 IT Business Track - 4 Myths about In-Memory Databases ...
 
полтавщина – наш рідний край
полтавщина – наш рідний крайполтавщина – наш рідний край
полтавщина – наш рідний край
 
Java concurrency - Thread pools
Java concurrency - Thread poolsJava concurrency - Thread pools
Java concurrency - Thread pools
 
The Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldThe Need for Async @ ScalaWorld
The Need for Async @ ScalaWorld
 
Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...
Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...
Delivering Meaning In Near-Real Time At High Velocity In Massive Scale with A...
 
Purely Functional Data Structures in Scala
Purely Functional Data Structures in ScalaPurely Functional Data Structures in Scala
Purely Functional Data Structures in Scala
 
Monadic Java
Monadic JavaMonadic Java
Monadic Java
 
NewSQL overview, Feb 2015
NewSQL overview, Feb 2015NewSQL overview, Feb 2015
NewSQL overview, Feb 2015
 
The Newest in Session Types
The Newest in Session TypesThe Newest in Session Types
The Newest in Session Types
 
Scala Days San Francisco
Scala Days San FranciscoScala Days San Francisco
Scala Days San Francisco
 
Espresso: LinkedIn's Distributed Data Serving Platform (Paper)
Espresso: LinkedIn's Distributed Data Serving Platform (Paper)Espresso: LinkedIn's Distributed Data Serving Platform (Paper)
Espresso: LinkedIn's Distributed Data Serving Platform (Paper)
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)
 
Paper 9,modernist literature
Paper 9,modernist literaturePaper 9,modernist literature
Paper 9,modernist literature
 
Vishvas resume template-7
Vishvas resume template-7Vishvas resume template-7
Vishvas resume template-7
 
Aesthetics of Touch: Desform Conference
Aesthetics of Touch: Desform ConferenceAesthetics of Touch: Desform Conference
Aesthetics of Touch: Desform Conference
 
Comercial sap
Comercial sapComercial sap
Comercial sap
 
2011 Meet the Parents Session - 3NT (Year End)
2011 Meet the Parents Session - 3NT (Year End)2011 Meet the Parents Session - 3NT (Year End)
2011 Meet the Parents Session - 3NT (Year End)
 

Similar to The Good, the Bad and the Ugly of Concurrency Models

Robust and Scalable Concurrent Programming: Lesson from the Trenches
Robust and Scalable Concurrent Programming: Lesson from the TrenchesRobust and Scalable Concurrent Programming: Lesson from the Trenches
Robust and Scalable Concurrent Programming: Lesson from the TrenchesSangjin Lee
 
Abusing the Cloud for Fun and Profit
Abusing the Cloud for Fun and ProfitAbusing the Cloud for Fun and Profit
Abusing the Cloud for Fun and ProfitAlan Pinstein
 
Stress Test & Chaos Engineering
Stress Test & Chaos EngineeringStress Test & Chaos Engineering
Stress Test & Chaos EngineeringDiego Pacheco
 
testing for people who hate testing
testing for people who hate testingtesting for people who hate testing
testing for people who hate testingBram Vogelaar
 
Getting Started In Qa
Getting Started In QaGetting Started In Qa
Getting Started In Qactalbert
 
Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...Abraham Marin-Perez
 
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)jjhuff
 
Cloud automation strategies
Cloud automation strategiesCloud automation strategies
Cloud automation strategiesPuppet Labs
 
Cloud automation strategies
Cloud automation strategiesCloud automation strategies
Cloud automation strategiesPuppet Labs
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2Dino Dini
 
A Game-play Architecture for Performance
A Game-play Architecture for PerformanceA Game-play Architecture for Performance
A Game-play Architecture for Performancetektor
 
flowr streamlining computing workflows
flowr streamlining computing workflowsflowr streamlining computing workflows
flowr streamlining computing workflowssahil seth
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUKiwamu Okabe
 
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityHigh-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityAtlassian
 
Unit testing traning
Unit testing traningUnit testing traning
Unit testing traningDiego Pacheco
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsJonathan Hitchcock
 
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-SubramanyaErlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-SubramanyaHakka Labs
 
Scalability without going nuts
Scalability without going nutsScalability without going nuts
Scalability without going nutsJames Cox
 
NoVa Jug Sept. 08 Terracotta Clustered Architecture Patterns
NoVa Jug Sept. 08 Terracotta Clustered Architecture PatternsNoVa Jug Sept. 08 Terracotta Clustered Architecture Patterns
NoVa Jug Sept. 08 Terracotta Clustered Architecture Patternsoletizi
 
Story Driven Development
Story Driven DevelopmentStory Driven Development
Story Driven Developmentbrynary
 

Similar to The Good, the Bad and the Ugly of Concurrency Models (20)

Robust and Scalable Concurrent Programming: Lesson from the Trenches
Robust and Scalable Concurrent Programming: Lesson from the TrenchesRobust and Scalable Concurrent Programming: Lesson from the Trenches
Robust and Scalable Concurrent Programming: Lesson from the Trenches
 
Abusing the Cloud for Fun and Profit
Abusing the Cloud for Fun and ProfitAbusing the Cloud for Fun and Profit
Abusing the Cloud for Fun and Profit
 
Stress Test & Chaos Engineering
Stress Test & Chaos EngineeringStress Test & Chaos Engineering
Stress Test & Chaos Engineering
 
testing for people who hate testing
testing for people who hate testingtesting for people who hate testing
testing for people who hate testing
 
Getting Started In Qa
Getting Started In QaGetting Started In Qa
Getting Started In Qa
 
Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...
 
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
 
Cloud automation strategies
Cloud automation strategiesCloud automation strategies
Cloud automation strategies
 
Cloud automation strategies
Cloud automation strategiesCloud automation strategies
Cloud automation strategies
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2
 
A Game-play Architecture for Performance
A Game-play Architecture for PerformanceA Game-play Architecture for Performance
A Game-play Architecture for Performance
 
flowr streamlining computing workflows
flowr streamlining computing workflowsflowr streamlining computing workflows
flowr streamlining computing workflows
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCU
 
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code QualityHigh-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
High-Octane Dev Teams: Three Things You Can Do To Improve Code Quality
 
Unit testing traning
Unit testing traningUnit testing traning
Unit testing traning
 
Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad Decisions
 
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-SubramanyaErlang - Because s**t Happens by Mahesh Paolini-Subramanya
Erlang - Because s**t Happens by Mahesh Paolini-Subramanya
 
Scalability without going nuts
Scalability without going nutsScalability without going nuts
Scalability without going nuts
 
NoVa Jug Sept. 08 Terracotta Clustered Architecture Patterns
NoVa Jug Sept. 08 Terracotta Clustered Architecture PatternsNoVa Jug Sept. 08 Terracotta Clustered Architecture Patterns
NoVa Jug Sept. 08 Terracotta Clustered Architecture Patterns
 
Story Driven Development
Story Driven DevelopmentStory Driven Development
Story Driven Development
 

Recently uploaded

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
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
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
"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 LapshynFwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
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
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
"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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

The Good, the Bad and the Ugly of Concurrency Models