SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
(println "Hello World! :)")
DDD as an implementation detail
Eloi Poch
Sergi González
Who$are$we?$
$
!
es.linkedin.com/in/eloipoch/$
$
$
@eloipoch$
$
Eloi.poch@akamon.com$
Eloi!Poch!
!
Technical!Lead!at!@Akamon!
•  So8ware$Developer$
•  Clojure$developer$wannabe$
•  Want$to$code$in$Castefa$beach$while$drinking$wine$
(conj '(1 2 3) 4)
Who$are$we?$
$
!
es.linkedin.com/in/sergigp/$
$
$
“SergiGP$
$
Sergi.gonzalez@akamon.com$
Sergi!
!
Technical!Lead!at!@Akamon!
•  So<ware$Developer$
•  Chief$Trolling$Officer$
•  Two$animals$remaining$to$have$an$urban$zoo$
Akamon
A little bit on Akamon before
we deal with the technical stuff
We#develop#Social#Casino#Games#
Por$olio'of'Facebook'games'
Por$olio'of'Mobile'apps'
Recently(launched(a(new(Casino(Suite(
Technically …
Flash Client Game Server Backend
AS3
Nova
Java
JReactive & Vertx
PHP
Horus
@eloipoch @jordillonch @SergiGP
@jorgeavila_ss @jdiezc
@jvalduvieco
@amassa5
Who we are? The backend team
Development
Problems
Our expectations…
Performance
Big Data
Difficult Algorithms
Concurrency
Real time analytics
Scalability
The ugly truth…
Technical Problems
Code Complexity
Big ball of mud
Shared State
Coupling
& Non-Technical
problems
Different Cultures
Tackling Complex Code
The Philosophy
Simple made Easy
Complex((
One(role(
One(task(
not(a(single(opera2on(
(
OBJECTIVE
Hard(
Familiar,(near(your(
knowledge(
(
(
Simple(vs(Easy(
(
SUBJECTIVEOBJECTIVE
Simple vs Easy
$mysqli = new mysqli("localhost", "horus", "olakease", “suite");
$mysqli->query("INSERT INTO users …”))
SIMPLE
EASY
/**
* @ORMEntity
* @ORMTable(name="product")
*/
class Product
$sum = function ($carry, $item) { return $carry + $item; }
array_reduce([1, 2, 3], $sum);
$acc = 0;
foreach ([1, 2, 3] as $value) {
$acc += $value;
}
SIMPLE
EASY
Simple vs EasySimple vs Easy
$acc = 0;
foreach ([1, 2, 3] as $value) {
$acc += $value;
}
SIMPLE
EASY
(reduce + [1 2 3])
Simple vs EasySimple vs Easy
Simplicity vs Easiness
• Easy to understand
• Easy to debug
• Easy to change,
flexibility,
maintenable
• Easy to use
• Hard to debug
• Hard to change
Complected
• Something does more than one thing and you can’t
split it easily
• Source of accidental complexity
• DON’T DO IT
Essential Complexity
VS
Accidental Complexity
Do not complect, compose
Tackling Complex Code
The Theory
Organisational level
Pair Programming
Pull Requests
Code Reviews
Continuous Integration
Self Empowerment
Never ask for permission unless it
would be reckless not to
Trust
Great teams are unafraid to air their dirty laundry, admit
their mistakes, their weaknesses and their concerns
without fear.
Patrick Lencioni
Technical Level
Lean Approach
Any model/solution
is provisional
YAGNI
You Aren’t Gonna Need It
DDD Concepts
• DDD Tactical:
• Application
Services
• Domain Services
• Domain Events
• Repositories
• AR & VO
• DDD Strategical:
• Modules
• Bounded
Contexts
• SubDomains
• Context Maps
CQRS Concepts
Hexagonal
Architecture
TDD & BDD
Tackling Complex Code
The Practice
Divide, Test &
Conquer
Product Entity
Example
Product
Id
Name
Description
Price
Currency
Image Url
Coins
StoreId
Product
Product
Descriptions
Product
Prices
Stores
Product
Benefits
Product
Images
ProductId
Product
Description
Product
Price
Stores
Product
Benefit
Product
Image
Description
Name Currency
Amount
Coins
StoreId
Image Url
ProductId
Product
Description
Product
Price
Stores
Product
Benefit
Product
Image
Description
Name Currency
Amount
Coins
StoreId
Image Url
Product BC
ProductId
Product
Description
Product
Price
Stores
Product
Benefit
Product
Image
Description
Name Currency
Amount
Coins
StoreId
Image Url
Pricing/Sales BC
Product BC
Product
Id
BenefitId
Product Price
ProductId
Amount
Currency
Product
Description
ProductId
Name
Description
Product Benefit
Id
Amount
VirtualMoneyId
Product Store
ProductId
StoreId
HORUS
Big Picture
• Directories: 773
• Files: 1501
• Lines of code: 113885
• Non-Comment Lines of Code: 88806 (80%)
• Average Class Length: 14 lines
• Average Method Length: 2 lines
• Cyclomatic Complexity / LLOC: 0.06
• Cyclomatic Complexity / Number of Methods: 1.21
HORUS
Big Picture of our Code in Horus
• Directories: 773 / 558
• Files: 1501 / 1001
• Lines of code: 113885 / 41205
• Non-Comment Lines of Code: 88806 (80%) / 38045 (92%)
• Average Class Length: 14 lines / 5 lines
• Average Method Length: 2 lines / 2 lines
• Cyclomatic Complexity / LLOC: 0.06 / 0.03
• Cyclomatic Complexity / Number of Methods: 1.21 / 1.14
UserPostController Command Bus
UserRegistratorCommandHandler
UserRegistrator
Domain
Event
Publisher
UserRegisteredDomainEv
entSubscriber
UserAccountOpener
User UserRepository Event
Subscribers
.
.
.
POST /users
[
userId: 0db90987-5ce1-4683-bb05-7d1b5539cb0b
]
Command
Handlers
.
.
.
UserRegisteredDomainEvent
User
HORUS
BASIC REQUEST
UserRegistrationCommand
UserRegistrationCommand
userId
analyticsContextId
userId
analyticsContextId
UserRegisteredDomainEvent
userId
analyticsContextId
id 

(Economy Account)
UserPostController Command Bus
UserRegistratorCommandHandler
UserRegistrator
Domain
Event
Publisher
UserRegisteredDomainEv
entSubscriber
UserAccountOpener
User UserRepository Event
Subscribers
.
.
.
POST /users
[
userId: 0db90987-5ce1-4683-bb05-7d1b5539cb0b
]
Command
Handlers
.
.
.
UserRegisteredDomainEvent
User
HORUS
BASIC REQUEST
UserRegistrationCommand
UserRegistrationCommand
userId
analyticsContextId
userId
analyticsContextId
UserRegisteredDomainEvent
userId
analyticsContextId
id 

(Economy Account)
UserModule
EconomyModule
Operational
Analytics
Support
Marketing
DE
C
Q
Q
We are still
COUPLED !!
Operational
Analytics
Support
Marketing
HTTP
…
Tackling Complex Code
The Conclusions
Mistakes
• Do not store domain events
• Own libraries for CQRS & DDD
• Do not use Domain Services
• Domain events with wrong identifiers
• Couple App Services to Commands & Queries
• Not start earlier some Modules/Bounded Contexts
Mistakes
• Let the DB guide us
• Let the framework guide us
Problems
• Domain Events: Lost of order (async)
• Doctrine
• Unit Of Work + Integration Test = Fail
• Embedded: Identifier or not
• Behat: The Container
Tips & Tricks
• Repositories:
• Just add, save and find
• Use of DQL implies the schema is too complex
• Controllers: 50 lines of code
• Application Services: Avoid business logic
• One step at time: Hex. Arch. -> DDD -> CQRS -> ES?
• Start it as a Module and promote it later to BC
TROLLTIME
QUESTIONS?
Akamon Developers

Más contenido relacionado

Similar a PHP Barcelona Monthly Talk Feb 2015

Domain Driven Development applied
Domain Driven Development appliedDomain Driven Development applied
Domain Driven Development appliedEloi Poch
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & FeaturesDave Ross
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go Eylem Ozekin
 
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Krzysztof Kotowicz
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitChad Udell
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitChad Udell
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Developmenttwopoint718
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NETDror Helper
 
Password Storage Sucks!
Password Storage Sucks!Password Storage Sucks!
Password Storage Sucks!nerdybeardo
 
Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)globelabs
 
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"Yandex
 
Philip Stehlik at TechTalks.ph - Intro to Groovy and Grails
Philip Stehlik at TechTalks.ph - Intro to Groovy and GrailsPhilip Stehlik at TechTalks.ph - Intro to Groovy and Grails
Philip Stehlik at TechTalks.ph - Intro to Groovy and GrailsPhilip Stehlik
 
The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...
The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...
The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...Thoughtworks
 
We Should Start Overclocking Mobile Devices!
We Should Start Overclocking Mobile Devices!We Should Start Overclocking Mobile Devices!
We Should Start Overclocking Mobile Devices!HWBOT
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsLewis Ardern
 
An Introduction to Go
An Introduction to GoAn Introduction to Go
An Introduction to GoCloudflare
 
Fighting fraud: finding duplicates at scale
Fighting fraud: finding duplicates at scaleFighting fraud: finding duplicates at scale
Fighting fraud: finding duplicates at scaleAlexey Grigorev
 
Secure Communication: Usability and Necessity of SSL/TLS
Secure Communication: Usability and Necessity of SSL/TLSSecure Communication: Usability and Necessity of SSL/TLS
Secure Communication: Usability and Necessity of SSL/TLSwolfSSL
 

Similar a PHP Barcelona Monthly Talk Feb 2015 (20)

Domain Driven Development applied
Domain Driven Development appliedDomain Driven Development applied
Domain Driven Development applied
 
Clojure at ardoq
Clojure at ardoqClojure at ardoq
Clojure at ardoq
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & Features
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go
 
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
 
About Clack
About ClackAbout Clack
About Clack
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and Profit
 
Hacking Robots for Fun and Profit
Hacking Robots for Fun and ProfitHacking Robots for Fun and Profit
Hacking Robots for Fun and Profit
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Development
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NET
 
Password Storage Sucks!
Password Storage Sucks!Password Storage Sucks!
Password Storage Sucks!
 
Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)Globe Labs - Voice API (Developer Preview)
Globe Labs - Voice API (Developer Preview)
 
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
 
Philip Stehlik at TechTalks.ph - Intro to Groovy and Grails
Philip Stehlik at TechTalks.ph - Intro to Groovy and GrailsPhilip Stehlik at TechTalks.ph - Intro to Groovy and Grails
Philip Stehlik at TechTalks.ph - Intro to Groovy and Grails
 
The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...
The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...
The Enterprise Architecture you always wanted: A Billion Transactions Per Mon...
 
We Should Start Overclocking Mobile Devices!
We Should Start Overclocking Mobile Devices!We Should Start Overclocking Mobile Devices!
We Should Start Overclocking Mobile Devices!
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript Applications
 
An Introduction to Go
An Introduction to GoAn Introduction to Go
An Introduction to Go
 
Fighting fraud: finding duplicates at scale
Fighting fraud: finding duplicates at scaleFighting fraud: finding duplicates at scale
Fighting fraud: finding duplicates at scale
 
Secure Communication: Usability and Necessity of SSL/TLS
Secure Communication: Usability and Necessity of SSL/TLSSecure Communication: Usability and Necessity of SSL/TLS
Secure Communication: Usability and Necessity of SSL/TLS
 

Último

%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
+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
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
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 AidPhilip Schwarz
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Último (20)

%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
+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...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
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
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

PHP Barcelona Monthly Talk Feb 2015