SlideShare ist ein Scribd-Unternehmen logo
1 von 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
✓ConïŹgurable execution
The Good
✓ConïŹgurable execution
✓M:N task to thread ratio
The Good
✓ConïŹgurable 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
✓ConïŹgurable execution
The Good
✓ConïŹgurable 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 DataïŹ‚ow
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
DataïŹ‚ow
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
✓ConïŹgurable execution
The Good
✓Encapsulation
✓Supervision
✓ConïŹgurable execution
✓Location transparency
The Good
✓Encapsulation
✓Supervision
✓ConïŹgurable execution
✓Location transparency
✓Models real-world
The Good
✓Encapsulation
✓Supervision
✓ConïŹgurable 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 ïŹ‚ow
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
DataïŹ‚ow & Async & Rx
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
DataïŹ‚ow & Async & Rx
Thread + Queue
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
DataïŹ‚ow & Async & Rx
Thread + Queue
Executor
Compartmentalization
ExecutionCoordination
STM
Java Future
Conclusion
Scala Future
FRP
Actors
DataïŹ‚ow & Async & Rx
Thread + Queue
Executor
Thread + Locks
Conclusion
Conclusion
Pick
Conclusion
Pick
your
Conclusion
Pick
your
☠
E0F

Weitere Àhnliche Inhalte

Andere mochten auch

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
 
Monadic Java
Monadic JavaMonadic Java
Monadic JavaMario Fusco
 
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
 

Andere mochten auch (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)
 

Ähnlich wie 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
 

Ähnlich wie 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
 

KĂŒrzlich hochgeladen

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
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel AraĂșjo
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
🐬 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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
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
 

KĂŒrzlich hochgeladen (20)

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
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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...
 
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
 
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...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
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
 

The Good, the Bad and the Ugly of Concurrency Models