SlideShare ist ein Scribd-Unternehmen logo
1 von 96
Downloaden Sie, um offline zu lesen
EagerDesign
by @_md
♞
marcelloduarte
Introducing
marcelloduarte
@_md
#EagerDesign
agileislazy
@_md#EagerDesign
"Makethecommitmentatthelast

responsiblemoment"
Preston Smith
decide later
softwareisaboutpeople
@_md#EagerDesign
ageofexcess
@_md#EagerDesign
subtraction
@_md#EagerDesign
subtraction
@_md#EagerDesign
lawsofsubtraction
@_md
lawsofsubtraction
whatisn’ttherecanoftentrumpwhatis.thesimplest
rulescreatethemosteffectiveexperience.limiting
informationengagesimagination.creativitythrives
underintelligentconstraints.breakistheimportant
partofbreakthrough.doingsomethingisn’talways
betterthandoingnothing.
Matthew E. May
EagerDesign
how
♞
Jumptotheproblemworthsolving
Eagerlyreplaceprimitiveswithtypes
Compose[thedomainalgebra] inside-out
Avoidmutablestate
#1
#2
#3
#4
@_md#EagerDesign
outside-in
♞
outside-in
unittest code
refactor
acceptance
ui/controller/views
orm,libs,domainobjects
frameworkstuff(forms…)
model/view/controller
events
outside-in
UI
Domain
core
Application
Infrastructure
mobileUI
port/adapter
port/adapterDB
https://pbs.twimg.com/media/CHyUAukWgAA5iYS.jpg
reads
writes
therightoutside
http://bit.ly/modellingbyexample
http://bit.ly/whencucumbersgobad
@_md#EagerDesign
{
outside-in
slow
misleading
complex
restrictscomposability
when?
EagerDesign
when
done
trivial
done

nottrivial
notdone
noidea
[based on Cynefin, Snowden 03]
@_md#EagerDesign
EagerDesign
when
done
trivial
done

nottrivial
notdone
noidea
[based on Cynefin, Snowden 03]
Outside-in
@_md#EagerDesign
EagerDesign
when
done
trivial
done

nottrivial
notdone
noidea
[based on Cynefin, Snowden 03]
EagerDesign
Outside-in
@_md#EagerDesign
EagerDesign
when
done
trivial
done

nottrivial
notdone
noidea
[based on Cynefin, Snowden 03]
EagerDesign
Outside-in
¯_(ツ)_/¯
@_md#EagerDesign
Example
{
chessapp
weaddplayers
itgeneratestheschedule
wecanentertheresults
wecanseetheranking
TRIVIAL
TRIVIAL
TRIVIAL
EagerDesign
@_md
{
domainrules
playerswillplaywitheveryotherplayer
playerscan'tplaytwiceinthesameround
everyplayermustplayineveryround
playersmustplaytwicewithanotherplayer
@_md
HowdoIconvert

alistofthings

intoalistofuniquelists

ofuniquepairs?
Letmethink
a b c d e f g h
List of things
a b c d e f g h
List of things
Pairs
a b c d
h g f e
Pairs
a b c d
h g f e
Shift to the right
a b c d
h g f ee
We haz roundz! :o)
a b c d
h g f ee
r1 r2 r3 r4
r5 r6 r7
+ r1 r2 r3 r4
r5 r6 r7
inverse
( )
r1 r2 r3 r4
r5 r6 r7 r8
r9 r10 r11 r12
r13 r14
shuffle
( )
lawsofsubtraction
whatisn’ttherecanoftentrumpwhatis.thesimplest
rulescreatethemosteffectiveexperience.limiting
informationengagesimagination.creativitythrives
underintelligentconstraints.breakistheimportant
partofbreakthrough.doingsomethingisn’talways
betterthandoingnothing.
Matthew E. May
#1Jumptotheproblemworthsolving
@_md#EagerDesign
http://github.com/MarcelloDuarte/phunkie
ImmList
a b c d e f g hhead
a b c d e f g htail
a b c d e f g hinit
a b c d e f g hlast
concat(
head($players),
last($players),
init(tail($players))
function shift(ImmList $players)
{
return concat(head($players),
last($players),
init(tail($players))
);
}
function shift(ImmList $players)
{
return concat(head($players),
last($players),
init(tail($players))
);
}
function round(ImmList $players)

{
$sides = $players->splitAt($players->length/2);
return $sides->_1->zip($sides->_2->reverse());
}
function rounds(ImmList $players)

{
}
function rounds(ImmList $players, $rounds = [])

{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
function rounds(ImmList $players, $rounds = [])

{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
function rounds(ImmList $players, $rounds = [])

{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
function rounds(ImmList $players, $rounds = [])

{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
#3Compose
function rounds(ImmList $players, $rounds = [])

{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
#4Avoidmutablestate
function rounds(ImmList $players, $rounds = [])

{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
function schedule(ImmList $players)

{
return concat(rounds($players),

inverse(rounds($players));
}
#2Eagerlyreplaceprimitiveswithtypes
@_md#EagerDesign
“Mymathbackgroundmademerealise
thateachobjectcouldhaveseveral
algebrasassociatedwithit,andthere
couldbefamiliesofthese,andthatthese
wouldbeveryveryuseful...
...Imadeupaterm"genericity"for

dealingwithgenericbehavioursina

quasi-algebraicform...
...Ididn'tlikethewaySimulaIorSimula
67didinheritance.SoIdecidedtoleave
outinheritanceasabuilt-infeatureuntilI
understooditbetter.”
AlanKay
http://bit.ly/meaning-­‐of-­‐oo
type Player = string;
type Players = ImmList<Player>;

type Match = Pair<Player,Player>

type Round = ImmList<Match>;

type Rounds = ImmList<Round>;

type Schedule = Rounds;



function shift(Players $players): Players
{
return concat(head($players),
last($players),
init(tail($players))
);
}
function round(Players $players): Round

{
$sides = $players->splitAt($players->length/2);
return $sides->_1->zip($sides->_2->reverse());
}
function rounds(Players $players, $rounds = [])

: Rounds
{
$rounds[] = round($players);
return count($rounds) < $players->length - 1 ?
rounds(shift($players), $rounds) :

ImmList(...$rounds);
}
function schedule(Players $players): Rounds

{
return concat(rounds($players),

inverse(rounds($players));
}
Composethedomainalgebra
inside-out
@_md#EagerDesign
namespace MdChessScheduleGeneration;
shift(Players $players): Players

round(Players $players): Round
rounds(Players $players): Rounds
schedule(Players $players): Schedule
♞
Players => Schedule
Players => Rounds => Schedule
♞
Players => Round => Rounds => Schedule
♞
domainrulesaredefined
againsttypes
@_md#EagerDesign
{
domainrules
playerswillplaywitheveryotherplayer
playerscan'tplaytwiceinthesameround
everyplayermustplayineveryround
playersmustplaytwicewithanotherplayer
@_md
richdomainmodelvs

leandomainmodel
S
S
S
S
S
S
@_md#EagerDesign
richdomain
ImmutableState
ImmutableState
ImmutableState
B B
leandomain
Laws
InterpretingServicesAgency
Example
@_md#EagerDesign
def request

def decline

def amend

def accept

def done

def request(details:JobDetails): Job

def decline(ref:JobRef): Job

def amend(details:JobDetails): Job => Option[TimeSheet]

def accept(ref:JobRef): Job => Option[TimeSheet]

def done(ref:JobRef): TimeSheet => Remittance
trait JobService
{

def request(details:JobDetails): Job

def decline(ref:JobRef): Job

def amend(details:JobDetails):Job => Option[TimeSheet]
def accept(ref:JobRef): Job => Option[TimeSheet]

def done(ref:JobRef): TimeSheet => Remittance
}
trait JobService
{

def request(details:JobDetails): Job

def decline(ref:JobRef): Job

def amend(details:JobDetails):Job => Option[TimeSheet]
def accept(ref:JobRef): Job => Option[TimeSheet]

def done(ref:JobRef): TimeSheet => Remittance
}
f(a:A):M[B]



g(a:B):M[C]
f(a:A):M[B]

f(a) map g = M[M[C]]


g(a:B):M[C]
f(a:A):M[B]

join f(a) map g = M[C]


g(a:B):M[C]
f(a:A):M[B]

andThen


g(a:B):M[C]
request andThen
amend andThen
done
def execute(input:Input): Unit
path = input("path").getOrElse("specs")
loadSpecs(path) andThen
runSpecs andThen
presentResults
what’stheeagerpoint?
@_md#EagerDesign
merging2cells!!
@_md#EagerDesign
{
3cases
samevalue
differentvalue
righthandsideis
empty
if ($this->value == $another->value) {
return Pair(Cell(),
Cell($this->value + $another->value));
} elseif ($another->isEmpty()) {
return Pair(Cell(), Cell($this->value));
}
return Pair(Cell($this->value), Cell($another->value));
if ($this->value == $another->value) {
return Pair(Cell(),
Cell($this->value + $another->value));
} elseif ($another->isEmpty()) {
return Pair(Cell(), Cell($this->value));
}
return Pair(Cell($this->value), Cell($another->value));
if ($this->value == $another->value) {
return Pair(Cell(),
Cell($this->value + $another->value));
} elseif ($another->isEmpty()) {
return Pair(Cell(), Cell($this->value));
}
return Pair(Cell($this->value), Cell($another->value));
function swipe($lines)
{

return $lines->map(function ($line) {


$lineCopy = mergeLine($line);

while (!isLineMerged($lineCopy)) {

$lineCopy = mergeLine($lineCopy);
}

return $lineCopy;

});

}
EagerDesign
♞
Jumptotheproblemworthsolving
Eagerlyreplaceprimitiveswithtypes
Compose[thedomainalgebra] inside-out
Avoidmutablestate
#1
#2
#3
#4
@_md#EagerDesign
marcelloduarte
@_md
#EagerDesign
Thankyou!
♞
@_md
bit.ly/inviqa-contact bit.ly/inviqa-careers
#EagerDesign

Weitere ähnliche Inhalte

Was ist angesagt?

Contoh daftar hadir penyuluh agama islam non pns di kua
Contoh daftar hadir penyuluh agama islam non pns di kuaContoh daftar hadir penyuluh agama islam non pns di kua
Contoh daftar hadir penyuluh agama islam non pns di kua
mohali34
 

Was ist angesagt? (18)

Sistem pengendalian intern pemerintah spip internal control_birokrasi bersih ...
Sistem pengendalian intern pemerintah spip internal control_birokrasi bersih ...Sistem pengendalian intern pemerintah spip internal control_birokrasi bersih ...
Sistem pengendalian intern pemerintah spip internal control_birokrasi bersih ...
 
Roundown acara perpisahan
Roundown acara perpisahanRoundown acara perpisahan
Roundown acara perpisahan
 
2. analisis permasalahan dan isu strategis
2. analisis permasalahan dan isu strategis2. analisis permasalahan dan isu strategis
2. analisis permasalahan dan isu strategis
 
Buku materi-pramuka-penegak-berdiri
Buku materi-pramuka-penegak-berdiriBuku materi-pramuka-penegak-berdiri
Buku materi-pramuka-penegak-berdiri
 
Surat kaban-bpmpd-perubahan-apb des-2016
Surat kaban-bpmpd-perubahan-apb des-2016Surat kaban-bpmpd-perubahan-apb des-2016
Surat kaban-bpmpd-perubahan-apb des-2016
 
Zona integritas
Zona integritasZona integritas
Zona integritas
 
Profil BPDASHL Bone Bolango
Profil BPDASHL Bone BolangoProfil BPDASHL Bone Bolango
Profil BPDASHL Bone Bolango
 
Pengangkatan dan Pemberhentian Dewan Pengawas dan Komisaris BUMD_ (Permendagr...
Pengangkatan dan Pemberhentian Dewan Pengawas dan Komisaris BUMD_ (Permendagr...Pengangkatan dan Pemberhentian Dewan Pengawas dan Komisaris BUMD_ (Permendagr...
Pengangkatan dan Pemberhentian Dewan Pengawas dan Komisaris BUMD_ (Permendagr...
 
Contoh daftar hadir penyuluh agama islam non pns di kua
Contoh daftar hadir penyuluh agama islam non pns di kuaContoh daftar hadir penyuluh agama islam non pns di kua
Contoh daftar hadir penyuluh agama islam non pns di kua
 
Kepemimpinan ldks smp islam al hikmah 2018 2019
Kepemimpinan ldks smp islam al hikmah 2018 2019Kepemimpinan ldks smp islam al hikmah 2018 2019
Kepemimpinan ldks smp islam al hikmah 2018 2019
 
Penguatan Daerah Penyangga dalam Mendukung IKN
Penguatan Daerah Penyangga dalam Mendukung IKNPenguatan Daerah Penyangga dalam Mendukung IKN
Penguatan Daerah Penyangga dalam Mendukung IKN
 
ROADMAP REFORMASI BIROKRASI KABUPATEN TANGERANG
ROADMAP REFORMASI BIROKRASI KABUPATEN TANGERANGROADMAP REFORMASI BIROKRASI KABUPATEN TANGERANG
ROADMAP REFORMASI BIROKRASI KABUPATEN TANGERANG
 
Penyusunan RPJP Lampung.pdf
Penyusunan RPJP Lampung.pdfPenyusunan RPJP Lampung.pdf
Penyusunan RPJP Lampung.pdf
 
Agile Transformation Case Studies
Agile Transformation Case StudiesAgile Transformation Case Studies
Agile Transformation Case Studies
 
Model Pembel dan Penyel PKA 2022_PPSDM Bukittinggi 2022.pdf
Model Pembel dan Penyel PKA 2022_PPSDM Bukittinggi 2022.pdfModel Pembel dan Penyel PKA 2022_PPSDM Bukittinggi 2022.pdf
Model Pembel dan Penyel PKA 2022_PPSDM Bukittinggi 2022.pdf
 
Sistem Inovasi Daerah
Sistem Inovasi DaerahSistem Inovasi Daerah
Sistem Inovasi Daerah
 
Panduan Khusus Kepengurusan
Panduan Khusus KepengurusanPanduan Khusus Kepengurusan
Panduan Khusus Kepengurusan
 
LHP BPK
LHP BPKLHP BPK
LHP BPK
 

Andere mochten auch

Andere mochten auch (8)

Empathy from Agility
Empathy from AgilityEmpathy from Agility
Empathy from Agility
 
Functional Structures in PHP
Functional Structures in PHPFunctional Structures in PHP
Functional Structures in PHP
 
Tdd is Dead, Long Live TDD
Tdd is Dead, Long Live TDDTdd is Dead, Long Live TDD
Tdd is Dead, Long Live TDD
 
Architecting your Content for the Unknown Consumer
Architecting your Content for the Unknown ConsumerArchitecting your Content for the Unknown Consumer
Architecting your Content for the Unknown Consumer
 
Deliberate practice
Deliberate practiceDeliberate practice
Deliberate practice
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015
 
Barely Enough Design
Barely Enough DesignBarely Enough Design
Barely Enough Design
 
The framework as an implementation detail
The framework as an implementation detailThe framework as an implementation detail
The framework as an implementation detail
 

Ähnlich wie Introducing Eager Design

Getfilestruct zbksh
Getfilestruct zbkshGetfilestruct zbksh
Getfilestruct zbksh
Ben Pope
 
Getfilestruct zbksh(1)
Getfilestruct zbksh(1)Getfilestruct zbksh(1)
Getfilestruct zbksh(1)
Ben Pope
 
Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013
Sébastien Deleuze
 
E-Primer Your Business Online
E-Primer Your Business OnlineE-Primer Your Business Online
E-Primer Your Business Online
guestfc9d8a
 
Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
Damien Seguy
 

Ähnlich wie Introducing Eager Design (20)

Metaprogramming and Folly
Metaprogramming and FollyMetaprogramming and Folly
Metaprogramming and Folly
 
4Developers: Norbert Wójtowicz- Data-Oriented Architecture
4Developers: Norbert Wójtowicz- Data-Oriented Architecture4Developers: Norbert Wójtowicz- Data-Oriented Architecture
4Developers: Norbert Wójtowicz- Data-Oriented Architecture
 
RubyEnRails2007 - Dr Nic Williams - DIY Syntax
RubyEnRails2007 - Dr Nic Williams - DIY SyntaxRubyEnRails2007 - Dr Nic Williams - DIY Syntax
RubyEnRails2007 - Dr Nic Williams - DIY Syntax
 
Beyond Breakpoints: Advanced Debugging with XCode
Beyond Breakpoints: Advanced Debugging with XCodeBeyond Breakpoints: Advanced Debugging with XCode
Beyond Breakpoints: Advanced Debugging with XCode
 
Getfilestruct zbksh
Getfilestruct zbkshGetfilestruct zbksh
Getfilestruct zbksh
 
Getfilestruct zbksh(1)
Getfilestruct zbksh(1)Getfilestruct zbksh(1)
Getfilestruct zbksh(1)
 
Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013Dart : one language to rule them all - MixIT 2013
Dart : one language to rule them all - MixIT 2013
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile World
 
E-Primer Your Business Online
E-Primer Your Business OnlineE-Primer Your Business Online
E-Primer Your Business Online
 
Malli: inside data-driven schemas
Malli: inside data-driven schemasMalli: inside data-driven schemas
Malli: inside data-driven schemas
 
optim function
optim functionoptim function
optim function
 
Quality code by design
Quality code by designQuality code by design
Quality code by design
 
Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
 
R Workshop for Beginners
R Workshop for BeginnersR Workshop for Beginners
R Workshop for Beginners
 
Dip Your Toes in the Sea of Security
Dip Your Toes in the Sea of SecurityDip Your Toes in the Sea of Security
Dip Your Toes in the Sea of Security
 
Dip Your Toes in the Sea of Security (CoderCruise 2017)
Dip Your Toes in the Sea of Security (CoderCruise 2017)Dip Your Toes in the Sea of Security (CoderCruise 2017)
Dip Your Toes in the Sea of Security (CoderCruise 2017)
 
Understanding our code with tests, schemas, and types
Understanding our code with tests, schemas, and typesUnderstanding our code with tests, schemas, and types
Understanding our code with tests, schemas, and types
 
pa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processingpa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processing
 
Padrino is agnostic
Padrino is agnosticPadrino is agnostic
Padrino is agnostic
 

Mehr von Marcello Duarte

Mehr von Marcello Duarte (10)

Transitioning to Agile
Transitioning to AgileTransitioning to Agile
Transitioning to Agile
 
Understanding craftsmanship
Understanding craftsmanshipUnderstanding craftsmanship
Understanding craftsmanship
 
Hexagonal symfony
Hexagonal symfonyHexagonal symfony
Hexagonal symfony
 
PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examples
 
Emergent design with phpspec
Emergent design with phpspecEmergent design with phpspec
Emergent design with phpspec
 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
BDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecBDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpec
 
PHPSpec BDD for PHP
PHPSpec BDD for PHPPHPSpec BDD for PHP
PHPSpec BDD for PHP
 
PHPSpec BDD Framework
PHPSpec BDD FrameworkPHPSpec BDD Framework
PHPSpec BDD Framework
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
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
vu2urc
 
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
Enterprise Knowledge
 

Kürzlich hochgeladen (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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 future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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
 
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...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Introducing Eager Design