SlideShare ist ein Scribd-Unternehmen logo
1 von 185
Downloaden Sie, um offline zu lesen
WHEN FP
meets DDD
Good Things Happen
Cyrille Martraire - @cyriux -
http://25.media.tumblr.com/tumblr_lus2bi5FAU1qhnnqjo1_500.jpg
Passionate
developer
PARIS
Since 1999
@cyriux
Cyrille Martraire
Paris Software
Craftsmanship Community
http://www.meetup.com/paris-software-craftsmanship/
Arolla.fr
WARNING
The	 following	 show	 features	 
no	 spectacular	 stunt,	 no	 live	 
coding,	 only	 trivial	 Java	 code.	 
You	 can	 re-create	 or	 re-enact	 
at	 home	 with	 no	 danger.
A matter
of Taste
http://rosshirt.blogspot.fr/
The Code Gourmet
(dedicate to @ziobrando)
"My first encounter
with FP concepts
was from DDD"
a bit personal
DDD+FP
= ?
DDD?
justenoughtheory
http://www.virtual-genius.com/blog/post/Domain-Driven-Design-Immersion-Course-e280
Focus on the
domain!
Seniors Developers
http://www.thisisio.ie/blog/article/149/hiring_senior_developer
I. Putting the
model to work
II. Building blocks
(Tactical DDD)
III.Refactoring
toward deeper
insight
IV. Strategic DDD
Adopted 2005
Still in love
What do you think
when you hear
about FP?
http://jeremykun.com/2013/02/08/why-there-is-no-hitchhikers-guide-to-mathematics-for-programmers/
http://www.jaider.net/archives/609-intro-to-functional-programming/
PURE
No State
No War
What do DDD & FP
have in common?
Value Objects................................................................................................. 19
Learn one
and get the other
one for FREE!
DDD
FP
(OO)
DDD
FP
(OO)
NICE
STYLEof code
Let’s try that
sam
plepractice
(Prag) Dave Thomas
http://codekata.pragprog.com/
Code
Kata FTW!
Day
Max Temperature
Min Temperature
Unit (C/F)
Please compute
Daily min-max spreads
Daily min-max mids
Monthly average
...
GO
Read file
Compute spread
& console output
DONE.
NEXT
DONE.
UH-OH!
Duplication
Duplication
Transaction
Script 1
Transaction
Script 2
Transaction
Script 1
Transaction
Script 2≈
Data
access
Data
access
Presentation Presentation
Domain Domain
Transaction
Script 1
Transaction
Script 2
Data
access
Data
access
Presentation Presentation
Domain Domain
Transaction
Script 1
Transaction
Script 2
≈
Data
access
Data
access
Presentation Presentation
Domain Domain
Transaction
Script 1
Transaction
Script 2
≈
=
Data
access
Data
access
Presentation Presentation
Domain Domain
Transaction
Script 1
Transaction
Script 2
≈
=
=
Data
access
Presentation
Domain Domain
Data
access
Presentation
Domain Domain≈
Data
access
Presentation
Domain
Data
access
Presentation
Domain
Refactoring of similar
Transaction Scripts -> layers!
Emergence of a
domain layer
Emergence of a
domain layer
DDD
Emergence of a
domain layer
DDD
Domain layer:
"Here we talk about
the domain only"
My hygiene standards in
domain layer
• Dependencies
– Legacy
– Middleware
– Frameworks
– Database stuff
– No logging
null
+ TDD, BDD
+ Clean Code
Load data
process data
output data
<<side-effect-free>>
Load data
<<side-effect>>
<<side-effect>>
process data
output data
<<side-effect-free>>
Load data
<<side-effect>>
<<side-effect>>
process data
output data
Favor side-effect-
free functions in
domain layer
Data
access
Presentation
Domain functions
records
list
side-effect-
free function
Very easy to test
input output
http://le.compendium.pagesperso-orange.fr/compendium_metrique.htm
expected = expression
Side-effect free service
<<ValueObje
ct
<<ValueObje
ct
<<ValueObject>>
<<ValueObje
ct
<<ValueObject>>
<<Service>>
<<SPI>><<Service>>
<<API>>
Values in Values out
NEXT
= 1/N	 ∑
Varying units
18°C
+ 65°F
= ?
Duplication
Duplication
Let’s factor it out
Extract a function?
We can do better
Extract a
TYPE
Temperature
value
unit
behavior!
"65°F"
No getter/
setter
Immutable
Enum
Immutable Goodness
bugs
keep old state
safe sharing
(concurrency)
Temperature
value
unit
behavior!
<<ValueObject>>
Value Object:
equals by fields
equality
FP: everything
is a value
Value Object
A DDD pattern
to import FP-ish
values in OO
languages
“Functional-First” style
“Functional-First” style
• Value Objects (Quantity, Range…) as
much as possible
90%
“Functional-First” style
Value Objects
(Ok, gut feeling, I did’nt measure)
Methods return
same type
toCelsius(): Temperature
toFarenheit(): Temperature
Temperature
Methods return
same type
toCelsius(): Temperature
toFarenheit(): Temperature
Temperature
avg = 1 ∑ti
n i
double sum = 0;
int count = 0;
for(Temperature t in temperatures){
sum+= t1.toCelsius().getValue();
count++;
}
return sum/count;
double sum = 0;
int count = 0;
for(Temperature t in temperatures){
sum+= t1.toCelsius().getValue();
count++;
}
return sum/count;
DEMETER
VIOLATION
avg = t1.add(t2)
.scale(1/2);
returns a new
instance
Change -> new instance
Methods manipulate
same type
toCelsius(): Temperature
toFarenheit(): Temperature
add(Temperature): Temperature
scale(double): Temperature
Temperature
Closure of
Operations
Closure of
Operations
18°C
+ 16°C
= 34°C
Temperature sum = max.add(min);
18°C
+ 16°C
= 34°C
Object
Arithmetics
Object
Arithmetics
avg = 1 ∑ti
n i
unit-safe
DONE.
...for(...){...}
...for(...){...}
Duplication
Duplication
Zipper?
We can even do
better
How do domain
experts THINK
about it?
How do domain
experts THINK
about it?
SAY
SKETCH
Go out and
listen to them!
Tell us
about your domain
blabla Time
Series bla bla...
Time Series?
Yes, let me show
you
- =
Max Min Spreads
OK
Introduce a type
TimeSeries
TimeSeries spread =
max.subtract(min);
<<ValueObject>>
TimeSeries
points
at(i)
add(TimeSeries):TimeSeries
subtract(TimeSeries):TimeSe
Value Object
again
Closure of
Operations
again
add(TimeSeries):TimeSeries
subtract(TimeSeries):TimeSeries
Declarative style
TimeSeries spread
= max.subtract(min);
Temperature sum
= max.add(min);
So far
Domain Layer
Better style
emerging from
refactoring with a
focus on the omain
Wrote code with:
Wrote code with:
no naked primitive
Wrote code with:
no naked primitive
no naked collection
Object Calisthenics?
Signal to Noise ratio
http://www.flickr.com/photos/28471130@N07/2666802097
Signal to Noise Ratio
• SNR ≥ 80 %
• Signal (VO): CashFlow.multiply(),
CashFlowSequence.add(), .negate(),
truncate(), Money.add(), .times
(), .opposite(), Fixing,
FinancialProduct, BankHolidays,
ReferenceData
• Noise: CashFlowBuilder,
CompositeEngine, ProductFactory,
BankHolidaysDecorator
WeWant:
Traceability
of processing
No worry!
Just enrich our
types
Just enrich our
types
Just enrich our
types
label field
Monad-ish
No logging needed
Each value stores
its history
Draw on
established
formalisms
Object
Arithmetics
=
Maths structure
Magma/Monoid/
Vector Spaces
Identity Element
= NullObject
Identity Element
= NullObject
VatCalculation.NONE
Wikipedia is
your friend!
In Closing
Invest time:
Learn DDD, and get
free FP exposure
A paradox:
FP influence helps
craft better Object-
Oriented code!
DDD + FP
A love story
http://wadler.blogspot.fr/2008/04/functional-programming-is-beautiful.html
Taste-Driven
Development
TDD
Questions?
You can also ask me later!
@cyriux
Merci
Merci

Weitere ähnliche Inhalte

Ähnlich wie I T.A.K.E. talk: "When DDD meets FP, good things happen"

Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014Cyrille Martraire
 
20.1 Java working with abstraction
20.1 Java working with abstraction20.1 Java working with abstraction
20.1 Java working with abstractionIntro C# Book
 
Control all the Things with Node-JS
Control all the Things with Node-JSControl all the Things with Node-JS
Control all the Things with Node-JSDavid Janes
 
program#include iostreamusing namespace std;void calculatio.pdf
program#include iostreamusing namespace std;void calculatio.pdfprogram#include iostreamusing namespace std;void calculatio.pdf
program#include iostreamusing namespace std;void calculatio.pdfinfo382133
 
Being Expressive in Code
Being Expressive in CodeBeing Expressive in Code
Being Expressive in CodeEamonn Boyle
 
AI&ML Conference 2019 - Deep Learning from zero to hero
AI&ML Conference 2019 - Deep Learning from zero to heroAI&ML Conference 2019 - Deep Learning from zero to hero
AI&ML Conference 2019 - Deep Learning from zero to heroGianluca Carucci
 
"Quantum" performance effects
"Quantum" performance effects"Quantum" performance effects
"Quantum" performance effectsSergey Kuksenko
 
Google App Engine in 40 minutes (the absolute essentials)
Google App Engine in 40 minutes (the absolute essentials)Google App Engine in 40 minutes (the absolute essentials)
Google App Engine in 40 minutes (the absolute essentials)Python Ireland
 
Notes about moving from python to c++ py contw 2020
Notes about moving from python to c++ py contw 2020Notes about moving from python to c++ py contw 2020
Notes about moving from python to c++ py contw 2020Yung-Yu Chen
 
Lecture # 1 - Introduction Revision - 1 OOPS.pptx
Lecture # 1 - Introduction  Revision - 1 OOPS.pptxLecture # 1 - Introduction  Revision - 1 OOPS.pptx
Lecture # 1 - Introduction Revision - 1 OOPS.pptxSanaullahAttariQadri
 
OOPS using C++
OOPS using C++OOPS using C++
OOPS using C++cpjcollege
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better codeDror Helper
 

Ähnlich wie I T.A.K.E. talk: "When DDD meets FP, good things happen" (20)

Linux_C_LabBasics.ppt
Linux_C_LabBasics.pptLinux_C_LabBasics.ppt
Linux_C_LabBasics.ppt
 
Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014
 
Ur Domain Haz Monoids
Ur Domain Haz MonoidsUr Domain Haz Monoids
Ur Domain Haz Monoids
 
20.1 Java working with abstraction
20.1 Java working with abstraction20.1 Java working with abstraction
20.1 Java working with abstraction
 
Control all the Things with Node-JS
Control all the Things with Node-JSControl all the Things with Node-JS
Control all the Things with Node-JS
 
Apclass
ApclassApclass
Apclass
 
Apclass (2)
Apclass (2)Apclass (2)
Apclass (2)
 
Clean code
Clean codeClean code
Clean code
 
Apclass (2)
Apclass (2)Apclass (2)
Apclass (2)
 
program#include iostreamusing namespace std;void calculatio.pdf
program#include iostreamusing namespace std;void calculatio.pdfprogram#include iostreamusing namespace std;void calculatio.pdf
program#include iostreamusing namespace std;void calculatio.pdf
 
Being Expressive in Code
Being Expressive in CodeBeing Expressive in Code
Being Expressive in Code
 
AI&ML Conference 2019 - Deep Learning from zero to hero
AI&ML Conference 2019 - Deep Learning from zero to heroAI&ML Conference 2019 - Deep Learning from zero to hero
AI&ML Conference 2019 - Deep Learning from zero to hero
 
"Quantum" performance effects
"Quantum" performance effects"Quantum" performance effects
"Quantum" performance effects
 
Google App Engine in 40 minutes (the absolute essentials)
Google App Engine in 40 minutes (the absolute essentials)Google App Engine in 40 minutes (the absolute essentials)
Google App Engine in 40 minutes (the absolute essentials)
 
Notes about moving from python to c++ py contw 2020
Notes about moving from python to c++ py contw 2020Notes about moving from python to c++ py contw 2020
Notes about moving from python to c++ py contw 2020
 
L04 Software Design Examples
L04 Software Design ExamplesL04 Software Design Examples
L04 Software Design Examples
 
Lecture # 1 - Introduction Revision - 1 OOPS.pptx
Lecture # 1 - Introduction  Revision - 1 OOPS.pptxLecture # 1 - Introduction  Revision - 1 OOPS.pptx
Lecture # 1 - Introduction Revision - 1 OOPS.pptx
 
C# Loops
C# LoopsC# Loops
C# Loops
 
OOPS using C++
OOPS using C++OOPS using C++
OOPS using C++
 
From clever code to better code
From clever code to better codeFrom clever code to better code
From clever code to better code
 

Mehr von Cyrille Martraire

Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Cyrille Martraire
 
Sunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft ForeverSunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft ForeverCyrille Martraire
 
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...Cyrille Martraire
 
Bounded Context - DDD Europe Foundation Track
Bounded Context - DDD Europe Foundation TrackBounded Context - DDD Europe Foundation Track
Bounded Context - DDD Europe Foundation TrackCyrille Martraire
 
Domain Modeling towards First Principles
Domain Modeling towards First PrinciplesDomain Modeling towards First Principles
Domain Modeling towards First PrinciplesCyrille Martraire
 
DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018Cyrille Martraire
 
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Cyrille Martraire
 
Refactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionRefactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionCyrille Martraire
 
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Cyrille Martraire
 
DDD patterns that were not in the book
DDD patterns that were not in the bookDDD patterns that were not in the book
DDD patterns that were not in the bookCyrille Martraire
 
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Cyrille Martraire
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Cyrille Martraire
 
Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Cyrille Martraire
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)Cyrille Martraire
 
Domain-Driven Design in legacy application
Domain-Driven Design in legacy applicationDomain-Driven Design in legacy application
Domain-Driven Design in legacy applicationCyrille Martraire
 
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Cyrille Martraire
 

Mehr von Cyrille Martraire (17)

Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
 
Sunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft ForeverSunny Tech 2019 - Craft Forever
Sunny Tech 2019 - Craft Forever
 
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
 
Bounded Context - DDD Europe Foundation Track
Bounded Context - DDD Europe Foundation TrackBounded Context - DDD Europe Foundation Track
Bounded Context - DDD Europe Foundation Track
 
Domain Modeling towards First Principles
Domain Modeling towards First PrinciplesDomain Modeling towards First Principles
Domain Modeling towards First Principles
 
DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018
 
DDD for real
DDD for realDDD for real
DDD for real
 
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
 
Refactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionRefactor your Specs - 2017 Edition
Refactor your Specs - 2017 Edition
 
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
 
DDD patterns that were not in the book
DDD patterns that were not in the bookDDD patterns that were not in the book
DDD patterns that were not in the book
 
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?
 
Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
 
Domain-Driven Design in legacy application
Domain-Driven Design in legacy applicationDomain-Driven Design in legacy application
Domain-Driven Design in legacy application
 
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
 

Kürzlich hochgeladen

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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
🐬 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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 

Kürzlich hochgeladen (20)

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...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 

I T.A.K.E. talk: "When DDD meets FP, good things happen"