SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
Planning for the
unplannable
project founder of TYPO3 Flow 

and TYPO3 Neos
co-founder of the TYPO3 Association
software architect at TechDivision
37 years old
lives in Lübeck, Germany
1 wife, 2 daughters, 1 espresso machine
likes drumming
!
Experience
„Architecture”
Loose Coupling
High Cohesion
Law of Demeter
-each unit should have only limited knowledge about other
units: only units "closely" related to the current unit.

-each unit should only talk to its friends; don't talk to
strangers.

-only talk to your immediate friends.
Dependency Injection
!
class IsbnLookupService {	
	
protected static $instance;	
	
public function getInstance() {	
if (self::$instance === NULL) {	
self::$instance = new self;	
}	
return self::$instance;	
}	
}	
!
!
class BookSearchController {	
	
public function action() {	
$service = IsbnLookupService::getInstance();	
…	
}	
	
}
class ServiceLocator {	
	
protected static $services = array();	
	
public function getInstance($name) {	
return self::$service[$name];	
}	
!
}	
!
!
class BookSearchService {	
	
public function action() {	
$service = ServiceLocater::getInstance("IsbnLookupService");	
…	
}	
	
}
class BookSearchController extends ActionController {	
!
/**	
* @var IsbnLookupService	
*/	
protected $isbnLookupService;	
	
/**	
* @param IsbnLookupService $isbnLookupService	
*/	
public function __construct(IsbnLookupService $service) {	
$this->isbnLookupService = $service;	
}	
	
}
class BookSearchController extends ActionController {	
!
/**	
* @var IsbnLookupService	
*/	
protected $isbnLookupService;	
	
/**	
* @param IsbnLookupService $isbnLookupService	
*/	
public function injectLookupService(IsbnLookupService $service) {	
$this->isbnLookupService = $service;	
}	
	
}
class BookSearchController extends ActionController {	
!

/**	
* @FlowInject	
* @var IsbnLookupService	
*/	
protected $isbnLookupService;	
!
}
class BookSearchController extends ActionController {	
!

/**	
* @FlowInject	
* @var IsbnLookupServiceInterface	
*/	
protected $isbnLookupService;	
!
}
AcmeControllerBookSearchController:	
properties:	
isbnLookupService:	
className: AmazonServiceIsbnLookupService
Design Patterns
Reinvent the Wheel!
Planned and Unplanned
Extensibility
Configuration
Signal-Slot Pattern
Observer, Dispatcher, PublishSubsribe, Event-Notifier, …
Define a public API
with @api
Code against interfaces
DI + Interfaces
AOP
Dependency Management:
Composer, requirejs, …
Unit Tests
Functional Tests
System Tests
Understanding other’s code
Code Ownership
Software Rot
Remove unused code
Write code because it adds value
(not because you can)
But maybe we need it (YAGNI)
Be canny with configuration
Reviews
Change your perspective
Be picky!

Fix broken windows!
Readable Code
TP 3 lwCd gGi l e o o e a e
YO F
o o i u e ns n n p g
n
di
N m sae t twt vno nm
a epc s r i edr a e
as h
fl w d y akg ky nm ) n
o o e b pcae e (a e ad
l
sbata nee
upr s edd
s

O e s s t et e le
n ue t e n pri .
am
n
O e s s t et e nm sae
n ue t e n pr a epc.
am
Odrt e eta hbtay
re s t ns l ae cl.
am
p
il
D n iprnm sae ul s o
o' m ot a epcs n s yu
t
e
ue hm
s te .

N e pyi bten oCm et
o m t le e e D co m n
n
w
ad l sm m e vr r e o.
n c s e br a o m t d
a,
h

Ue a t . pi ads i i
s @vra O t nl ecp o
g
o
rtn
g e ite ito m n le
osn h fscm eti
r
n
fl w d y b n cm eti .
o o e b a l k o m n le
l
a
n

Pe re te a epcsul s
r e r a v nm sae,n s
f li
e
Fl Q afd a epc im r
uy uli N m saes oe
l
i
e
r db
e al
a e

<pp
?h
n m s a e Ametakg ;
a e p c ceTsPcae
/
*
*Ti srp blnst teTP3Fo pcae" ceTsPcae .
hs cit eog o h YO lw akg Am.etakg "
*
*I i fe sfwr;yucnrdsrbt i ado mdf i udr
t s re otae o a eitiue t n/r oiy t ne
*tetrso teGUGnrlPbi Lcne ete vrin3o te
h em f h N eea ulc ies, ihr eso
f h
*Lcne o (tyu oto)ayltrvrin
ies, r a or pin n ae eso.
*
*TeTP3poet-isiigpol t sae
h YO rjc
nprn epe o hr!
*

*
*
*
*
*
*
*
*
*
/

Cpue h j o cd g s o
atr teo foi a yu
y
n
c a ecln w b o t n.
r t xeet e sl i s
ee
l
uo
Ej cd gEj F w
n y oi .n y l .
o
n
o o

u e AmetakgevcoGnrtr
s ceTsPcaeSrieFoeeao ;
u e TP3Fonoain a Fo;
s YOlwAnttos s lw
/*
*
*Hr ge tedsrpino tecas I sol epanwa temi
ee os h ecito f h ls. t hud xli ht h an
*proeo ti casi..
ups f hs ls s.
*
*@ l w S o e ”igeo”
F o  c p (snltn )
*
/
c a s UiesAaye e t n s BsCasi p e e t SmItrae {
l s nvrenlzr x e d aels m l m n s oenefc
/*
*
*Sm ijce dpnec
oe netd eedny
*
*@ l w I j c
Fonet
*@ a Foeeao
v r oGnrtr
*
/
p o e t d $oeeedny= N L ;
r t c e smDpnec
UL
/*
*
*Sosi yuaeadce t TP3Fo
hw f o r ditd o YO lw
*
*@ a boen
v r ola
*
/
s a i p o e t d $ditdolw = T U ;
t t c r t c e adceTFo
RE

Dsr t n fh c s M k ia
ecpi o te l s aet s
io
a.
l g s eddf lr t ep i
o a nee, ef e o xln
n
e e
a
hwt uet
o o si
.
U pr m l s c s nm .l s
peC e ae l s a eC s
a C
a
a
nm s hu b nus
a e sol e on.
d
I ohr akgsipr
n te pcae, ot
m
c e et cae n e enl e
Am  s akg i r Aa zr
T P
Uvs
y
ad e rot s n esAa e
n r e t ia U i r nl r
f
v e y.
L t l  bfr ohras
i @F w* e e te t :
s
o
o
g
@vr aa , e r, ho s
a @prm @r un@trw ,
,
t
@ai i e@dpeae
p @s c, er t
, n
c d

http://rlmk.me/flowcgl

/*
*
*Sosi yuae afno TP3Fo
hw f o r
a f YO lw
*
*@ a boen
v r ola
*
/
p o e t d $aO Fo ;
r t c e fnflw
/*
*
*Agetmto wihsoshwt idn cnrlsrcue.
ra ehd hc hw o o net oto tutrs

Dsr t n fh m to. aet
ecpi o te e dM k i
io
h
a l g s edd
so a nee.
n

M to nm s hu b vrs
e d a e sol e eb.
h
d
Naming
!
!
!
!
!
!
!

$path!
$pathAndFilename!
$filename!
$directory!
$directoryName!
$class!
$className
The pragmatic programmer
Code complete
All Martin Fowler Books (PoEAA)
@robertlemke
robertlemke.com

Weitere ähnliche Inhalte

Was ist angesagt?

Find Diamonds in the Rough (Hidden Talent)
Find Diamonds in the Rough (Hidden Talent)Find Diamonds in the Rough (Hidden Talent)
Find Diamonds in the Rough (Hidden Talent)Fidelis
 
Ceh v8 labs module 10 denial of service
Ceh v8 labs module 10 denial of serviceCeh v8 labs module 10 denial of service
Ceh v8 labs module 10 denial of serviceMehrdad Jingoism
 
Sopa --de--letras
Sopa --de--letrasSopa --de--letras
Sopa --de--letrasPlan24
 
Revaluing Libraries: Content, Container, or Concept?
Revaluing Libraries: Content, Container, or Concept?Revaluing Libraries: Content, Container, or Concept?
Revaluing Libraries: Content, Container, or Concept?char booth
 
Guia n°1 sopa de letras
Guia n°1 sopa de letrasGuia n°1 sopa de letras
Guia n°1 sopa de letrasMaría Guzmán
 
Halvani Victor Art Catalog
Halvani Victor Art Catalog Halvani Victor Art Catalog
Halvani Victor Art Catalog VictorHalvani
 
The1101 experiment handbook 2020
The1101 experiment handbook 2020The1101 experiment handbook 2020
The1101 experiment handbook 2020Paul MacFarlane
 
Modeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ frModeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ frCédric Brun
 
The War of the Worlds review
The War of the Worlds reviewThe War of the Worlds review
The War of the Worlds reviewErasmus+
 
Irakurketa SILABIKOA- KUBOAK- letra LARRIA
Irakurketa SILABIKOA-  KUBOAK-  letra LARRIAIrakurketa SILABIKOA-  KUBOAK-  letra LARRIA
Irakurketa SILABIKOA- KUBOAK- letra LARRIAidoialariz
 
Prezentatsia pro shechenka_shumeyka_daniyila
Prezentatsia pro shechenka_shumeyka_daniyilaPrezentatsia pro shechenka_shumeyka_daniyila
Prezentatsia pro shechenka_shumeyka_daniyilaJulia Birhova
 

Was ist angesagt? (20)

Astronomia
AstronomiaAstronomia
Astronomia
 
EyeCatcher
EyeCatcherEyeCatcher
EyeCatcher
 
YIEF-2011
YIEF-2011YIEF-2011
YIEF-2011
 
Find Diamonds in the Rough (Hidden Talent)
Find Diamonds in the Rough (Hidden Talent)Find Diamonds in the Rough (Hidden Talent)
Find Diamonds in the Rough (Hidden Talent)
 
Sopa de letras ingles
Sopa de letras inglesSopa de letras ingles
Sopa de letras ingles
 
Juego proiedades-del-carbono
Juego proiedades-del-carbonoJuego proiedades-del-carbono
Juego proiedades-del-carbono
 
Ceh v8 labs module 10 denial of service
Ceh v8 labs module 10 denial of serviceCeh v8 labs module 10 denial of service
Ceh v8 labs module 10 denial of service
 
Sopa --de--letras
Sopa --de--letrasSopa --de--letras
Sopa --de--letras
 
Revaluing Libraries: Content, Container, or Concept?
Revaluing Libraries: Content, Container, or Concept?Revaluing Libraries: Content, Container, or Concept?
Revaluing Libraries: Content, Container, or Concept?
 
Guia n°1 sopa de letras
Guia n°1 sopa de letrasGuia n°1 sopa de letras
Guia n°1 sopa de letras
 
AmE Phonetic Maps
AmE Phonetic Maps AmE Phonetic Maps
AmE Phonetic Maps
 
Training developers in user research af Søeren Vinther Færch, AAU
Training developers in user research af Søeren Vinther Færch, AAUTraining developers in user research af Søeren Vinther Færch, AAU
Training developers in user research af Søeren Vinther Færch, AAU
 
Halvani Victor Art Catalog
Halvani Victor Art Catalog Halvani Victor Art Catalog
Halvani Victor Art Catalog
 
Guia 10 jimena
Guia 10 jimenaGuia 10 jimena
Guia 10 jimena
 
The1101 experiment handbook 2020
The1101 experiment handbook 2020The1101 experiment handbook 2020
The1101 experiment handbook 2020
 
Modeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ frModeling avengers – open source technology mix for saving the world econ fr
Modeling avengers – open source technology mix for saving the world econ fr
 
Portfolio 2020
Portfolio 2020Portfolio 2020
Portfolio 2020
 
The War of the Worlds review
The War of the Worlds reviewThe War of the Worlds review
The War of the Worlds review
 
Irakurketa SILABIKOA- KUBOAK- letra LARRIA
Irakurketa SILABIKOA-  KUBOAK-  letra LARRIAIrakurketa SILABIKOA-  KUBOAK-  letra LARRIA
Irakurketa SILABIKOA- KUBOAK- letra LARRIA
 
Prezentatsia pro shechenka_shumeyka_daniyila
Prezentatsia pro shechenka_shumeyka_daniyilaPrezentatsia pro shechenka_shumeyka_daniyila
Prezentatsia pro shechenka_shumeyka_daniyila
 

Ähnlich wie Planning for the unplannable project

The Making of a Big Idea
The Making of a Big IdeaThe Making of a Big Idea
The Making of a Big IdeaMartin Ringlein
 
School Violence and student
School Violence and studentSchool Violence and student
School Violence and studentacastane
 
Classroom Structuring and Management.ppt
Classroom Structuring and Management.pptClassroom Structuring and Management.ppt
Classroom Structuring and Management.pptBelceZeusAsuncion1
 
Scanned by CamScannerG o o d w M P r e p a id r e n t.docx
Scanned by CamScannerG o o d w M  P r e p a id  r e n t.docxScanned by CamScannerG o o d w M  P r e p a id  r e n t.docx
Scanned by CamScannerG o o d w M P r e p a id r e n t.docxkenjordan97598
 
Lap machine manual
Lap machine manualLap machine manual
Lap machine manualMuqthiar Ali
 
Modeling avengers – open source technology mix for saving the world
Modeling avengers – open source technology mix for saving the worldModeling avengers – open source technology mix for saving the world
Modeling avengers – open source technology mix for saving the worldCédric Brun
 
Frontend architecture on big and small sites
Frontend architecture on big and small sitesFrontend architecture on big and small sites
Frontend architecture on big and small sitesToni Pinel
 
The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?char booth
 
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptxJohnLagman3
 
Rigger and Signal Person
Rigger and Signal PersonRigger and Signal Person
Rigger and Signal PersonJason Wilson
 
Maurizio_Taffone_Emerging_Security_Threats
Maurizio_Taffone_Emerging_Security_ThreatsMaurizio_Taffone_Emerging_Security_Threats
Maurizio_Taffone_Emerging_Security_ThreatsMaurizio Taffone
 
compact-optimum_rte_training_manual.pdf
compact-optimum_rte_training_manual.pdfcompact-optimum_rte_training_manual.pdf
compact-optimum_rte_training_manual.pdfMiroslavTabakovski
 
Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...ioTHEATRE
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with GradleBob Paulin
 
Ceh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoorsCeh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoorsMehrdad Jingoism
 

Ähnlich wie Planning for the unplannable project (20)

The Making of a Big Idea
The Making of a Big IdeaThe Making of a Big Idea
The Making of a Big Idea
 
School Violence and student
School Violence and studentSchool Violence and student
School Violence and student
 
Research and Development in Roof-Top Solar Potentiality Using LiDAR Technology
Research and Development in Roof-Top Solar Potentiality Using LiDAR TechnologyResearch and Development in Roof-Top Solar Potentiality Using LiDAR Technology
Research and Development in Roof-Top Solar Potentiality Using LiDAR Technology
 
Classroom Structuring and Management.ppt
Classroom Structuring and Management.pptClassroom Structuring and Management.ppt
Classroom Structuring and Management.ppt
 
Scanned by CamScannerG o o d w M P r e p a id r e n t.docx
Scanned by CamScannerG o o d w M  P r e p a id  r e n t.docxScanned by CamScannerG o o d w M  P r e p a id  r e n t.docx
Scanned by CamScannerG o o d w M P r e p a id r e n t.docx
 
Winload.efi.mui
Winload.efi.muiWinload.efi.mui
Winload.efi.mui
 
Lap machine manual
Lap machine manualLap machine manual
Lap machine manual
 
Modeling avengers – open source technology mix for saving the world
Modeling avengers – open source technology mix for saving the worldModeling avengers – open source technology mix for saving the world
Modeling avengers – open source technology mix for saving the world
 
Frontend architecture on big and small sites
Frontend architecture on big and small sitesFrontend architecture on big and small sites
Frontend architecture on big and small sites
 
The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?The Library As Indicator Species: Evolution, or Extinction?
The Library As Indicator Species: Evolution, or Extinction?
 
Hacking with Love
Hacking with LoveHacking with Love
Hacking with Love
 
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
1-SYSTEM-ANALYSIS-AND-DESIGN-INTRODUCTION.pptx
 
Rigger and Signal Person
Rigger and Signal PersonRigger and Signal Person
Rigger and Signal Person
 
Fedena - School ERP
Fedena  - School ERPFedena  - School ERP
Fedena - School ERP
 
Maurizio_Taffone_Emerging_Security_Threats
Maurizio_Taffone_Emerging_Security_ThreatsMaurizio_Taffone_Emerging_Security_Threats
Maurizio_Taffone_Emerging_Security_Threats
 
compact-optimum_rte_training_manual.pdf
compact-optimum_rte_training_manual.pdfcompact-optimum_rte_training_manual.pdf
compact-optimum_rte_training_manual.pdf
 
Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...Le futur des communications par l'internet des objets - Présentation de SAGA ...
Le futur des communications par l'internet des objets - Présentation de SAGA ...
 
Evaluación final
Evaluación finalEvaluación final
Evaluación final
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with Gradle
 
Ceh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoorsCeh v8 labs module 06 trojans and backdoors
Ceh v8 labs module 06 trojans and backdoors
 

Mehr von Robert Lemke

Neos Content Repository – Git for content
Neos Content Repository – Git for contentNeos Content Repository – Git for content
Neos Content Repository – Git for contentRobert Lemke
 
A General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPA General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPRobert Lemke
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 
Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Robert Lemke
 
GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022Robert Lemke
 
OpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowOpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowRobert Lemke
 
Neos Conference 2019 Keynote
Neos Conference 2019 KeynoteNeos Conference 2019 Keynote
Neos Conference 2019 KeynoteRobert Lemke
 
A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)Robert Lemke
 
Neos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteNeos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteRobert Lemke
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSRobert Lemke
 
Neos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteNeos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteRobert Lemke
 
IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes Robert Lemke
 
IPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersIPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersRobert Lemke
 
Docker in Production - IPC 2016
Docker in Production - IPC 2016Docker in Production - IPC 2016
Docker in Production - IPC 2016Robert Lemke
 
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)Robert Lemke
 
The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)Robert Lemke
 
Neos - past, present, future (Inspiring Conference 2016)
Neos - past, present, future (Inspiring Conference 2016)Neos - past, present, future (Inspiring Conference 2016)
Neos - past, present, future (Inspiring Conference 2016)Robert Lemke
 
Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Robert Lemke
 
Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Robert Lemke
 
Turning Neos inside out / React.js HH
Turning Neos inside out / React.js HHTurning Neos inside out / React.js HH
Turning Neos inside out / React.js HHRobert Lemke
 

Mehr von Robert Lemke (20)

Neos Content Repository – Git for content
Neos Content Repository – Git for contentNeos Content Repository – Git for content
Neos Content Repository – Git for content
 
A General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPA General Purpose Docker Image for PHP
A General Purpose Docker Image for PHP
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022
 
GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022
 
OpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowOpenID Connect with Neos and Flow
OpenID Connect with Neos and Flow
 
Neos Conference 2019 Keynote
Neos Conference 2019 KeynoteNeos Conference 2019 Keynote
Neos Conference 2019 Keynote
 
A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)
 
Neos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteNeos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome Keynote
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRS
 
Neos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteNeos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome Keynote
 
IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes
 
IPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersIPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for Developers
 
Docker in Production - IPC 2016
Docker in Production - IPC 2016Docker in Production - IPC 2016
Docker in Production - IPC 2016
 
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
 
The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)
 
Neos - past, present, future (Inspiring Conference 2016)
Neos - past, present, future (Inspiring Conference 2016)Neos - past, present, future (Inspiring Conference 2016)
Neos - past, present, future (Inspiring Conference 2016)
 
Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!
 
Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!
 
Turning Neos inside out / React.js HH
Turning Neos inside out / React.js HHTurning Neos inside out / React.js HH
Turning Neos inside out / React.js HH
 

Kürzlich hochgeladen

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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 Servicegiselly40
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
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
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
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
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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 ...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
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
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Planning for the unplannable project

  • 2. project founder of TYPO3 Flow 
 and TYPO3 Neos co-founder of the TYPO3 Association software architect at TechDivision 37 years old lives in Lübeck, Germany 1 wife, 2 daughters, 1 espresso machine likes drumming !
  • 7. Law of Demeter -each unit should have only limited knowledge about other units: only units "closely" related to the current unit.
 -each unit should only talk to its friends; don't talk to strangers.
 -only talk to your immediate friends.
  • 9. ! class IsbnLookupService { protected static $instance; public function getInstance() { if (self::$instance === NULL) { self::$instance = new self; } return self::$instance; } } ! ! class BookSearchController { public function action() { $service = IsbnLookupService::getInstance(); … } }
  • 10. class ServiceLocator { protected static $services = array(); public function getInstance($name) { return self::$service[$name]; } ! } ! ! class BookSearchService { public function action() { $service = ServiceLocater::getInstance("IsbnLookupService"); … } }
  • 11. class BookSearchController extends ActionController { ! /** * @var IsbnLookupService */ protected $isbnLookupService; /** * @param IsbnLookupService $isbnLookupService */ public function __construct(IsbnLookupService $service) { $this->isbnLookupService = $service; } }
  • 12. class BookSearchController extends ActionController { ! /** * @var IsbnLookupService */ protected $isbnLookupService; /** * @param IsbnLookupService $isbnLookupService */ public function injectLookupService(IsbnLookupService $service) { $this->isbnLookupService = $service; } }
  • 13. class BookSearchController extends ActionController { ! /** * @FlowInject * @var IsbnLookupService */ protected $isbnLookupService; ! }
  • 14. class BookSearchController extends ActionController { ! /** * @FlowInject * @var IsbnLookupServiceInterface */ protected $isbnLookupService; ! }
  • 17.
  • 21.
  • 23.
  • 24.
  • 26. Define a public API with @api
  • 29. AOP
  • 30.
  • 35.
  • 36.
  • 41. Write code because it adds value (not because you can)
  • 42. But maybe we need it (YAGNI)
  • 43. Be canny with configuration
  • 45.
  • 46.
  • 50. TP 3 lwCd gGi l e o o e a e YO F o o i u e ns n n p g n di N m sae t twt vno nm a epc s r i edr a e as h fl w d y akg ky nm ) n o o e b pcae e (a e ad l sbata nee upr s edd s O e s s t et e le n ue t e n pri . am n O e s s t et e nm sae n ue t e n pr a epc. am Odrt e eta hbtay re s t ns l ae cl. am p il D n iprnm sae ul s o o' m ot a epcs n s yu t e ue hm s te . N e pyi bten oCm et o m t le e e D co m n n w ad l sm m e vr r e o. n c s e br a o m t d a, h Ue a t . pi ads i i s @vra O t nl ecp o g o rtn g e ite ito m n le osn h fscm eti r n fl w d y b n cm eti . o o e b a l k o m n le l a n Pe re te a epcsul s r e r a v nm sae,n s f li e Fl Q afd a epc im r uy uli N m saes oe l i e r db e al a e <pp ?h n m s a e Ametakg ; a e p c ceTsPcae / * *Ti srp blnst teTP3Fo pcae" ceTsPcae . hs cit eog o h YO lw akg Am.etakg " * *I i fe sfwr;yucnrdsrbt i ado mdf i udr t s re otae o a eitiue t n/r oiy t ne *tetrso teGUGnrlPbi Lcne ete vrin3o te h em f h N eea ulc ies, ihr eso f h *Lcne o (tyu oto)ayltrvrin ies, r a or pin n ae eso. * *TeTP3poet-isiigpol t sae h YO rjc nprn epe o hr! * * * * * * * * * * / Cpue h j o cd g s o atr teo foi a yu y n c a ecln w b o t n. r t xeet e sl i s ee l uo Ej cd gEj F w n y oi .n y l . o n o o u e AmetakgevcoGnrtr s ceTsPcaeSrieFoeeao ; u e TP3Fonoain a Fo; s YOlwAnttos s lw /* * *Hr ge tedsrpino tecas I sol epanwa temi ee os h ecito f h ls. t hud xli ht h an *proeo ti casi.. ups f hs ls s. * *@ l w S o e ”igeo” F o c p (snltn ) * / c a s UiesAaye e t n s BsCasi p e e t SmItrae { l s nvrenlzr x e d aels m l m n s oenefc /* * *Sm ijce dpnec oe netd eedny * *@ l w I j c Fonet *@ a Foeeao v r oGnrtr * / p o e t d $oeeedny= N L ; r t c e smDpnec UL /* * *Sosi yuaeadce t TP3Fo hw f o r ditd o YO lw * *@ a boen v r ola * / s a i p o e t d $ditdolw = T U ; t t c r t c e adceTFo RE Dsr t n fh c s M k ia ecpi o te l s aet s io a. l g s eddf lr t ep i o a nee, ef e o xln n e e a hwt uet o o si . U pr m l s c s nm .l s peC e ae l s a eC s a C a a nm s hu b nus a e sol e on. d I ohr akgsipr n te pcae, ot m c e et cae n e enl e Am s akg i r Aa zr T P Uvs y ad e rot s n esAa e n r e t ia U i r nl r f v e y. L t l bfr ohras i @F w* e e te t : s o o g @vr aa , e r, ho s a @prm @r un@trw , , t @ai i e@dpeae p @s c, er t , n c d http://rlmk.me/flowcgl /* * *Sosi yuae afno TP3Fo hw f o r a f YO lw * *@ a boen v r ola * / p o e t d $aO Fo ; r t c e fnflw /* * *Agetmto wihsoshwt idn cnrlsrcue. ra ehd hc hw o o net oto tutrs Dsr t n fh m to. aet ecpi o te e dM k i io h a l g s edd so a nee. n M to nm s hu b vrs e d a e sol e eb. h d
  • 53. The pragmatic programmer Code complete All Martin Fowler Books (PoEAA)