SlideShare a Scribd company logo
1 of 176
Download to read offline
Ur Domain Haz 
Monoids? 
DDDx NYC 14 
cyrille martraire aka @cyriux
Can you tell 
the 
difference?
Monoid
Glass of beer
This talk is 
the answer
DDD
FP
(00)
A matter 
of Taste 
http://rosshirt.blogspot.fr/ 
The Code 
Gourmet 
(dedicated to @ziobrando)
Passionate 
developer 
PARIS 
Since 1999 
! 
@cyriux 
Cyrille Martraire
Paris Software 
Craftsmanship Community 
http://www.meetup.com/paris-software-craftsmanship/
TDD 
BDD 
DDD 
Legacy
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 bit personal
Adopted 2005 
Still in love
...
What do DDD & FP 
have in common?
"My first encounter 
with FP concepts 
was from DDD"
FP = ?
http://www.jaider.net/archives/609-intro-to-functional-programming/ 
PURE
No State 
No War
So what do 
DDD & FP 
have in 
common?
Value Objects................................................................................................. 19
Learn one 
and get the other 
one for FREE!
DDD 
FP 
(OO)
NICE 
STYLE of code
DDD+FP 
= ?
Example 
PLZ?
MONOIDZ!
@cyriux
Closure 
Associativity 
Neutral Element
only 3 
numbers in 
programming
0, 1, MANY
Monoid: 
encapsulate 
diversity inside
Neutral Element 
0, 1, MANY 
Element 
Operation
Encapsulate 
special cases 
→ simple again
Battle against 
complexity
× × × …
× × × …
× × × …
Applied often: 
→ scalable process 
→ can grow to 
very complex 
complexity
Scalable in 
complexity
OO FTW! 
For a given interface I 
find myself doing 
often 0, 1, Many
NullObject 
Composite 
0, 1, MANY 
Implementation(s)
Identity Element 
= NullObject 
VatCalculation.NONE
Example 
PLZ!
Numbers 
int+int=int 
(3+5)+2=3+(5+2) 
0
Lists 
(.)+(.,.)=(.,.,.) 
(a︎)+(b︎,c)=(a︎, b)+(c) 
()
Strings 
"hello"+"world" 
"cy"+"ri"+"lle" 
""
look simplistic; 
the key to very 
complex behavior
The key to infinite 
scalability! 
(space)
The key to infinite 
incremental 
computing! 
(time)
Hadoop x Storm
Composeability
Monoids ☛ reduce
Monoids ☛ domain
Monoids ☛ domain
Monoids: 
typical FP
FP: 
Everything is a 
value
PROOF 
Therefore: 
Monoids are 
values!
VALUE OBJECTS
Immutable 
Equals by value
Value Object 
A DDD pattern 
to import FP-ish 
values in OO 
languages
Not Anemic
18 m 
+ 16 m 
= 34 m
Change -> new instance 
returns a new 
instance
SIDE-EFFECT 
-free 
FUNCTIONS
Immutability 
& 
Side-effect-free 
functions!
“Functional-First” style
“Functional-First” style 
90% 
Value Objects 
(Ok, gut feeling, I did’nt measure)
Money
(25, EUR) 
+ 
(30, EUR) 
= 
(55, EUR)
(25, EUR) 
+ 
(30, USD) 
= 
exception
Money 
<<ValueObject>> 
amount 
currency 
add(Money): Money
Cashflows 
(Payments)
(25, EUR, today) 
+ 
(30, EUR, today) 
= 
(55, EUR, today)
(25, EUR, today) 
+ 
(30, EUR, next day) 
= 
exception
CashFlow 
<<ValueObject>> 
amount 
currency 
date 
add(CashFlow):CashFlow
CLOSURE of 
OPERATION
Cashflows 
Sequences
(30, EUR, 21/03) 
(10, EUR, 20/03) 
(25, EUR, 21/03) 
(12, EUR, 22/03) 
(10, EUR, 20/03) 
(55, EUR, 21/03) 
(12, EUR, 22/03) 
+ 
=
Cashflow Sequence 
+ 
Cashflow Sequence 
= 
Cashflow Sequence
Object 
Arithmetics
This is how domain 
experts THINK 
about it 
SAY 
SKETCH
Ranges
[1, 3] 
Union* 
[2, 4] 
= 
[1, 4] 
* for a bounding box-kind definition of union
[1, 3] 
Union 
[2, 4] 
= 
[1, 4] ][
Predicates
Filter 
AND 
Filter 
= 
Filter
Filter 
AND 
Filter 
= 
Filter Always 
True
Filter 
OR 
Filter 
= 
Filter
Filter 
OR 
Filter 
= 
Filter Always 
False
Grants
Read, Write, Execute 
! 
"most secure wins" 
! 
r + w = r 
w + x = w
Configuration 
Maps
Default Desk-specific 
Color BLUE 
Enable True 
Timeout 30 + 
= 
Color RED 
Enable False 
Timeout 25 
Desk FX 
Color RED 
Enable True 
Timeout 25 
Desk FX
Default Desk-specific 
Color BLUE 
Enable True 
Timeout 30 + 
= 
Color RED 
Enable False 
Timeout 25 
Desk FX 
Color RED 
Enable True 
Timeout 25 
Desk FX 
overwrite 
logical OR 
min
Default Desk-specific 
Color BLUE 
Enable True 
Timeout 30 + 
Values are monoids too! 
= 
Color RED 
Enable False 
Timeout 25 
Desk FX 
Color RED 
Enable True 
Timeout 25 
Desk FX 
overwrite 
logical OR 
min
Color BLUE 
Enable True 
Timeout 30 + 
Neutral Element 
= 
Color NONE 
Enable False 
Timeout +∞ 
Desk ALL 
Color BLUE 
Enable True 
Timeout 30
Color BLUE 
Enable True 
Timeout 30 + 
Neutral Element 
= 
Color BLUE 
Enable True 
Timeout 30
Color BLUE 
Enable True 
Timeout 30 + 
Value Objects may be 
*BIG* object trees! 
(DOM) 
= 
Color BLUE 
Enable True 
Timeout 30
Non-Linear Stuff 
(average, std dev, 
K-clustering, 
barycenters...)
Average + Average = 
WRONG
Average + Average 
Not Composeable!
avg = sum / count 
! 
avg = sum / count 
!
avg = sum / count 
! 
avg = sum / count 
! 
+
avg = sum / count 
! 
avg = sum / count 
! 
+ +
avg = sum / count 
+ 
= 
+ 
= 
! 
avg = sum / count 
! 
avg = sum / count
(sum, count) 
! 
+ 
= 
(sum, count) 
! 
(sum, count) 
Average
(sum, sum2, count) 
+ 
= 
! 
(sum, sum2, count) 
! 
(sum, sum2, count) 
Std deviation
Can model as a 
monoid even non-linear 
stuff!
MOAR MATHS PLZ!
Monoid several times... 
MailingList 
toString(): String 
union(MailingList): MailingList 
intersection(MailingList): MailingList 
nobody(): MailingList 
everybody(): MailingList
Space 
Vectors
average temperature! 
= t1.add(t2)! 
.scale(1/2)
Change -> new instance 
returns a new 
instance
Space Vector 
Temperature 
toCelsius(): Temperature 
toFarenheit(): Temperature 
add(Temperature): Temperature 
scale(double): Temperature
Why 
is it useful?
(30, EUR, 21/03) 
(10, EUR, 20/03) 
(25, EUR, 21/03) 
(12, EUR, 22/03) 
(10, EUR, 20/03) 
(55, EUR, 21/03) 
(12, EUR, 22/03) 
+ 
=
Cashflow Sequence 
+ 
Cashflow Sequence 
= 
Cashflow Sequence
This is how domain 
experts THINK 
about it 
SAY 
SKETCH
DECLARATIVE STYLE
Much less code 
Much less bugs
// without monoids 
PaymentsFees(...) 
PaymentsFeesWithOptions(...) 
PaymentsFeesWithInsuranceAndOptions(...) 
PaymentsFeesWithInsurance(...) 
NoFeesButInsurance(...) 
... 
! 
// with monoids 
fees(...) : Payments 
options(...) : Payments 
insurance(...) : Payments 
! 
Payments.add(Payments) : Payments
// without monoids 
PaymentsFees(...) 
PaymentsFeesWithOptions(...) 
PaymentsFeesWithInsuranceAndOptions(...) 
PaymentsFeesWithInsurance(...) 
NoFeesButInsurance(...) 
...
// with monoids 
fees(...) : Payments 
options(...) : Payments 
insurance(...) : Payments 
! 
Payments.add(Payments) : 
Payments
Very easy to test 
side-effect-free 
operation 
input output
Much less stuff to 
learn
1 interface 
to rule them all
Cashflow Sequence 
+ 
Cashflow Sequence 
= 
Cashflow Sequence
ESTABLISHED FORMALISMS
Monoid/Vector 
Spaces/Cyclic Group
Literature 
Documented
@annotations 
MailingList 
@Monoid(neutral="emptyList") 
intersection(MailingList): MailingList 
! 
emptyList(): MailingList
LIVING DOCUMENTATION
Write code that 
tells the business 
domain stories
generic naming 
MailingList 
@Monoid(neutral="emptyList") 
intersection(MailingList): MailingList 
! 
emptyList(): MailingList
Domain-Specific naming 
MailingList 
@Monoid(neutral="nobody") 
overlapping(MailingList): MailingList 
! 
nobody(): MailingList
SELF-EXPLAINING 
VALUES
We Want: 
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
http://stuartcook.files.wordpress.com/2010/11/happy-monkey.jpg
In Closing
Composeability 
Composeability 
Composeability 
Composeability 
Composeability 
Composeability
Invest time: 
Learn DDD, and get 
free FP exposure
A paradox: 
FP influence helps 
craft better Object- 
Oriented code!
So simple 
most people 
have no 
appreciation 
of that!
Monoids 
are good: 
Eat Them!
LOOK 4 Ur 
DOMAIN 
MONOIDZ!
Also learn other 
maths structures
Wikipedia is 
your friend!
DDD+FP 
=
http://wadler.blogspot.fr/2008/04/functional-programming-is-beautiful.html
TDD 
Taste-Driven 
Development 
@cyriux
Questions? Did you try 
similar things too? 
Let’s discuss! 
@cyriux
Follow me @cyriux 
! 
Slides: slideshare.net/cyriux 
Blog: cyrille.martraire.com 
! 
In Paris? Join !
Merci
Abstractions in 
the small that 
compose at large

More Related Content

Similar to Ur Domain Haz Monoids DDDx NYC 2014

Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a Moment
Sergio Gil
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick tour
aztack
 

Similar to Ur Domain Haz Monoids DDDx NYC 2014 (20)

Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
 
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) Things
 
Abstracting Vector Architectures in Library Generators: Case Study Convolutio...
Abstracting Vector Architectures in Library Generators: Case Study Convolutio...Abstracting Vector Architectures in Library Generators: Case Study Convolutio...
Abstracting Vector Architectures in Library Generators: Case Study Convolutio...
 
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
 
Introduction to programming - class 11
Introduction to programming - class 11Introduction to programming - class 11
Introduction to programming - class 11
 
Types and Immutability: why you should care
Types and Immutability: why you should careTypes and Immutability: why you should care
Types and Immutability: why you should care
 
Python slide
Python slidePython slide
Python slide
 
Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a Moment
 
Erlang bootstrap course
Erlang bootstrap courseErlang bootstrap course
Erlang bootstrap course
 
DSL in scala
DSL in scalaDSL in scala
DSL in scala
 
Introduction to DAX Language
Introduction to DAX LanguageIntroduction to DAX Language
Introduction to DAX Language
 
Kotlin: maybe it's the right time
Kotlin: maybe it's the right timeKotlin: maybe it's the right time
Kotlin: maybe it's the right time
 
Effective Java with Groovy - How Language can Influence Good Practices
Effective Java with Groovy - How Language can Influence Good PracticesEffective Java with Groovy - How Language can Influence Good Practices
Effective Java with Groovy - How Language can Influence Good Practices
 
DISE - Windows Based Application Development in C#
DISE - Windows Based Application Development in C#DISE - Windows Based Application Development in C#
DISE - Windows Based Application Development in C#
 
P2 2017 python_strings
P2 2017 python_stringsP2 2017 python_strings
P2 2017 python_strings
 
DITEC - Programming with C#.NET
DITEC - Programming with C#.NETDITEC - Programming with C#.NET
DITEC - Programming with C#.NET
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
 
Ruby Language - A quick tour
Ruby Language - A quick tourRuby Language - A quick tour
Ruby Language - A quick tour
 
Type safe embedded domain-specific languages
Type safe embedded domain-specific languagesType safe embedded domain-specific languages
Type safe embedded domain-specific languages
 
Python crush course
Python crush coursePython crush course
Python crush course
 

More from Cyrille Martraire

More from Cyrille Martraire (18)

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)
 
I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"
 
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...
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

Ur Domain Haz Monoids DDDx NYC 2014