SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Building for
Perfection
Jorge D. Ortiz FuentesMADRID · NOV 27-28 · 2015
Building for
Perfection
Jorge D. Ortiz Fuentes
@jdortiz
#Swift4AA
A Canonical
Examples
production
#Swift4AA
#Swift4AA
Agenda
What is an advanced architecture?
Paradigms
Principles
Design Patterns
Conclusions
Advanced
Architecture
#Swift4AA
Advanced Architecture
High level structures
• Effectiveness
• Efficiency
• Robustness
• Beauty and elegance
#Swift4AA
Architectural Benefits
Reduce complexity
Maximize re-use
Reduce repetition
Basis for easier growth
Better testability
Readability and easier collaboration
– Salvador Dalí
“Have no fear of perfection,
you’ll never reach it”
Not just
one
But there are
wrong ones
Most likely yours
😜
Wrong
one
Paradigms
#Swift4AA
Programming Paradigms
ObjectOriented
Imperative PrgmDeclarative Prgm
Control
Flow
Data
Flow
#Swift4AA
Is Swift a Functional
Language?
Purity or pragmatism?
Swift allows to express solutions
declaratively
Many standard functions to help and even
more from some libraries
Principles
#Swift4AA
Principles
Single responsibility
Open/Closed
Liskov
Interface Segregation
Dependency Inversion
Design
Patterns
#Swift4AA
Syntactic Fructose
guard
defer
repeat
…
Guard
func presentCell(cell: SpeakerCellProtocol, indexPath:
NSIndexPath) {
let index = indexPath.row
guard index < speakers.count else { return }
let speaker = speakers[index]
cell.displayName(speaker.name)
cell.displayTitle(speaker.title)
cell.displayDateSubmitted(relativeDateStringFromDate(s
peaker.dateSubmitted))
}
#Swift4AA
Swift abstractions:
protocols
Swift doesn’t have abstract classes
Usage of the protocol extensions
Don’t “translate” design patterns to Swift
protocol Exportable {
func export(text: String)
}
extension Exportable {
func export() {}
}
class MarkdownDocument: Document,
Exportable {
}
Trait
class HTMLExporter {
func export(text: String) ->
String {
// Generate
}
}
class MarkdownDocument: Document
{
let exporter = HTMLExporter()
}
Poor Template
class Exporter {
func exportToHTML() -> String {
let header = generateHeader()
let body = generateContent()
let footer = generateFooter()
return header + body + footer
}
final func generateHeader() -> String { //Implementation
return "<html>"
}
func generateContent() -> String {
fatalError()
return “"
}
func generateFooter() -> String { //Implementation
return “</html>"
}
}
Swifty Template
protocol Exporter {
func exportToHTML() -> String
func generateHeader() -> String
func generateContent() -> String
func generateFooter() -> String
}
extension Exporter {
final func exportToHTML() -> String {
let header = generateHeader()
let body = generateContent()
let footer = generateFooter()
return header + body + footer
}
final func generateHeader() -> String { //Implementation
return "<html>"
}
func generateFooter() -> String { //Implementation
return "</html>"
}
}
#Swift4AA
Protocol Extensions
Adds to class API vs subsystem
(composition)
Reuse
DRY
#Swift4AA
Error Handling
Elegant implementation
Extended to current Cocoa for free
Errors subclass ErrorType
var control = Houston(fuel: 1.0,
astronaut: nil, spaceshipOK: true)
do {
try control.launchSpaceship()
} catch Houston.LaunchError.NoFuel
{
// Add Fuel
print("Adding fuel")
} catch
Houston.LaunchError.NoAstronaut {
print("Next in line")
} catch
Houston.LaunchError.BrokenShip(let
problem) {
print(problem)
} catch let unknowError {
//
}
Ready for Life
class Houston {
let fuel: Double
let astronaut: String
let spaceshipOK: Bool
init (fuel: Double, astronaut: String?,
spaceshipOK: Bool) {
self.fuel = fuel
self.astronaut = astronaut ?? ""
self.spaceshipOK = spaceshipOK
}
enum LaunchError: ErrorType {
case NoFuel, NoAstronaut,
BrokenShip(String)
}
func launchSpaceship() throws {
guard fuel >= 1.0 else { throw
LaunchError.NoFuel }
guard astronaut != "" else { throw
LaunchError.NoAstronaut }
guard spaceshipOK else { throw
LaunchError.BrokenShip("Engine") }
print("Launching spaceship")
}
}
#Swift4AA
Generics
Aimed at DRY
Much better that id (Obj-C) or AnyObject/
Any
And use where for further restrictions
Generic Awesome Power
func countGreater<T where T:Comparable>(array:
[T], value: T) -> Int {
var count = 0
for elem in array where elem > value {
count++
}
return count
}
#Swift4AA
If you scratch my back…
It is also true that some patterns make
using Swift easier
Prefer non-optionals: Null Object (and
combine it with errors)
class Text {
func displayContents() {
print("Hola")
}
}
class NullText: Text {
override func
displayContents() {
}
}
func fetchText() -> Text {
return NullText()
}
let text = fetchText()
text.displayContents()
Null Object
class Text {
func displayContents() {
print("Hola")
}
}
func fetchText() -> Text? {
return nil
}
if let text = fetchText() {
text.displayContents()
}
#Swift4AA
Still Pending
Introspection
• Very limited
• Useful for: Dependency Injection, KVC/KVO
Dynamic Dispatching
Community Supported features:
• Promises
• Reactive Extensions
Conclusions
#Swift4AA
Conclusions
Swift is a very expressive language
• Intent
It is mature enough to be used with
advanced architectures
Some additional features would be more
than welcome
Thank
you!
@jdortiz
#Swift4AA
MADRID · NOV 27-28 · 2015

Contenu connexe

En vedette

To Protect & To Serve
To Protect & To ServeTo Protect & To Serve
To Protect & To ServeJorge Ortiz
 
Presentacion
PresentacionPresentacion
Presentacionkalukaci
 
Formal and informal writing lesson 3
Formal and informal writing lesson 3Formal and informal writing lesson 3
Formal and informal writing lesson 3Elizabeth Sawatzky
 
2013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_2013
2013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_20132013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_2013
2013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_2013Cleriston Lopes
 
Maths Week - About Computers, for Kids
Maths Week - About Computers, for KidsMaths Week - About Computers, for Kids
Maths Week - About Computers, for KidsPeter Chittum
 
Chest Trauma - Mike Noonan
Chest Trauma  - Mike NoonanChest Trauma  - Mike Noonan
Chest Trauma - Mike NoonanAmit Maini
 
Breaking bread sabbath
Breaking bread sabbathBreaking bread sabbath
Breaking bread sabbathPrem Sinha
 
Silabus sejarah masuknya islam di nusantara
Silabus sejarah masuknya islam di nusantaraSilabus sejarah masuknya islam di nusantara
Silabus sejarah masuknya islam di nusantaraEvaariva
 
2ª aula qualidade, controle e metodos analiticos
2ª aula   qualidade, controle e metodos analiticos2ª aula   qualidade, controle e metodos analiticos
2ª aula qualidade, controle e metodos analiticosLilian Keila Alves
 
Android clean architecture workshop 3h edition
Android clean architecture workshop 3h editionAndroid clean architecture workshop 3h edition
Android clean architecture workshop 3h editionJorge Ortiz
 
Archaeological dating techniques
Archaeological dating techniquesArchaeological dating techniques
Archaeological dating techniqueskolsonanth
 
Abigail Resume copy revised
Abigail Resume copy revisedAbigail Resume copy revised
Abigail Resume copy revisedgail winbush
 
Leadership Styles and Value System of School Principals
Leadership Styles and Value System of School PrincipalsLeadership Styles and Value System of School Principals
Leadership Styles and Value System of School PrincipalsArchette Marie Ajon
 
Викторина для родителей: Путешествие на Северный полюс
Викторина для родителей: Путешествие на Северный полюсВикторина для родителей: Путешествие на Северный полюс
Викторина для родителей: Путешествие на Северный полюсAlexandr Romanovich Salomasov
 
Sarahi y alexis, analisis de la revista...
Sarahi y alexis, analisis de la revista...Sarahi y alexis, analisis de la revista...
Sarahi y alexis, analisis de la revista...Alexis de la Rosa
 
ICT Presentation Final
ICT Presentation FinalICT Presentation Final
ICT Presentation FinalHans van Rijn
 

En vedette (20)

To Protect & To Serve
To Protect & To ServeTo Protect & To Serve
To Protect & To Serve
 
Presentacion
PresentacionPresentacion
Presentacion
 
Formal and informal writing lesson 3
Formal and informal writing lesson 3Formal and informal writing lesson 3
Formal and informal writing lesson 3
 
2013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_2013
2013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_20132013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_2013
2013 simulacao 3 d_por_dipolos_magnéticos_henriquegasparoto_2013
 
Maths Week - About Computers, for Kids
Maths Week - About Computers, for KidsMaths Week - About Computers, for Kids
Maths Week - About Computers, for Kids
 
Chest Trauma - Mike Noonan
Chest Trauma  - Mike NoonanChest Trauma  - Mike Noonan
Chest Trauma - Mike Noonan
 
October Newsletter
October NewsletterOctober Newsletter
October Newsletter
 
Breaking bread sabbath
Breaking bread sabbathBreaking bread sabbath
Breaking bread sabbath
 
Fibromialgia
FibromialgiaFibromialgia
Fibromialgia
 
Manual de exames 2013 hermes-pardini
Manual de exames 2013 hermes-pardiniManual de exames 2013 hermes-pardini
Manual de exames 2013 hermes-pardini
 
Silabus sejarah masuknya islam di nusantara
Silabus sejarah masuknya islam di nusantaraSilabus sejarah masuknya islam di nusantara
Silabus sejarah masuknya islam di nusantara
 
2ª aula qualidade, controle e metodos analiticos
2ª aula   qualidade, controle e metodos analiticos2ª aula   qualidade, controle e metodos analiticos
2ª aula qualidade, controle e metodos analiticos
 
Android clean architecture workshop 3h edition
Android clean architecture workshop 3h editionAndroid clean architecture workshop 3h edition
Android clean architecture workshop 3h edition
 
Archaeological dating techniques
Archaeological dating techniquesArchaeological dating techniques
Archaeological dating techniques
 
Abigail Resume copy revised
Abigail Resume copy revisedAbigail Resume copy revised
Abigail Resume copy revised
 
Leadership Styles and Value System of School Principals
Leadership Styles and Value System of School PrincipalsLeadership Styles and Value System of School Principals
Leadership Styles and Value System of School Principals
 
юбилей школы на сайт
юбилей школы  на сайтюбилей школы  на сайт
юбилей школы на сайт
 
Викторина для родителей: Путешествие на Северный полюс
Викторина для родителей: Путешествие на Северный полюсВикторина для родителей: Путешествие на Северный полюс
Викторина для родителей: Путешествие на Северный полюс
 
Sarahi y alexis, analisis de la revista...
Sarahi y alexis, analisis de la revista...Sarahi y alexis, analisis de la revista...
Sarahi y alexis, analisis de la revista...
 
ICT Presentation Final
ICT Presentation FinalICT Presentation Final
ICT Presentation Final
 

Similaire à Building for perfection

Why the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureWhy the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureJorge Ortiz
 
Bring the fun back to java
Bring the fun back to javaBring the fun back to java
Bring the fun back to javaciklum_ods
 
Node.js: CAMTA Presentation
Node.js: CAMTA PresentationNode.js: CAMTA Presentation
Node.js: CAMTA PresentationRob Tweed
 
PHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckPHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckrICh morrow
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
 
Functional Testing Swing Applications with Frankenstein
Functional Testing Swing Applications with FrankensteinFunctional Testing Swing Applications with Frankenstein
Functional Testing Swing Applications with Frankensteinvivek_prahlad
 
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Raffi Khatchadourian
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptLaurence Svekis ✔
 
Writing usableap isinpractice
Writing usableap isinpracticeWriting usableap isinpractice
Writing usableap isinpracticeGiovanni Asproni
 
Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13DanWooster1
 
MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars
MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars
MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars PROIDEA
 
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...Applitools
 
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)Moaid Hathot
 

Similaire à Building for perfection (20)

Why the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID ArchitectureWhy the Dark Side should use Swift and a SOLID Architecture
Why the Dark Side should use Swift and a SOLID Architecture
 
Bring the fun back to java
Bring the fun back to javaBring the fun back to java
Bring the fun back to java
 
Node.js: CAMTA Presentation
Node.js: CAMTA PresentationNode.js: CAMTA Presentation
Node.js: CAMTA Presentation
 
Php exceptions
Php exceptionsPhp exceptions
Php exceptions
 
PHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckPHP from soup to nuts Course Deck
PHP from soup to nuts Course Deck
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under Test
 
Scala presentationjune112011
Scala presentationjune112011Scala presentationjune112011
Scala presentationjune112011
 
Functional Testing Swing Applications with Frankenstein
Functional Testing Swing Applications with FrankensteinFunctional Testing Swing Applications with Frankenstein
Functional Testing Swing Applications with Frankenstein
 
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
 
Start with swift
Start with swiftStart with swift
Start with swift
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScript
 
Core java
Core javaCore java
Core java
 
Writing usableap isinpractice
Writing usableap isinpracticeWriting usableap isinpractice
Writing usableap isinpractice
 
Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13
 
MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars
MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars
MCE^3 - Jorge D. Ortiz - Fuentes - Escape From Mars
 
The Veil-Framework
The Veil-FrameworkThe Veil-Framework
The Veil-Framework
 
Software Development with PHP & Laravel
Software Development  with PHP & LaravelSoftware Development  with PHP & Laravel
Software Development with PHP & Laravel
 
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
 
PHP 5
PHP 5PHP 5
PHP 5
 
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)
 

Plus de Jorge Ortiz

Tell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature FlagsTell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature FlagsJorge Ortiz
 
Unit Test your Views
Unit Test your ViewsUnit Test your Views
Unit Test your ViewsJorge Ortiz
 
Control your Voice like a Bene Gesserit
Control your Voice like a Bene GesseritControl your Voice like a Bene Gesserit
Control your Voice like a Bene GesseritJorge Ortiz
 
Kata gilded rose en Golang
Kata gilded rose en GolangKata gilded rose en Golang
Kata gilded rose en GolangJorge Ortiz
 
CYA: Cover Your App
CYA: Cover Your AppCYA: Cover Your App
CYA: Cover Your AppJorge Ortiz
 
Refactor your way forward
Refactor your way forwardRefactor your way forward
Refactor your way forwardJorge Ortiz
 
201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SG201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SGJorge Ortiz
 
Home Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinHome Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinJorge Ortiz
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowersJorge Ortiz
 
Architecting Alive Apps
Architecting Alive AppsArchitecting Alive Apps
Architecting Alive AppsJorge Ortiz
 
iOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editioniOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editionJorge Ortiz
 
Clean architecture workshop
Clean architecture workshopClean architecture workshop
Clean architecture workshopJorge Ortiz
 
Escape from Mars
Escape from MarsEscape from Mars
Escape from MarsJorge Ortiz
 
Dependence day insurgence
Dependence day insurgenceDependence day insurgence
Dependence day insurgenceJorge Ortiz
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowersJorge Ortiz
 
TDD for the masses
TDD for the massesTDD for the masses
TDD for the massesJorge Ortiz
 
7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOS7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOSJorge Ortiz
 
TDD by Controlling Dependencies
TDD by Controlling DependenciesTDD by Controlling Dependencies
TDD by Controlling DependenciesJorge Ortiz
 
Unit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after storyUnit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after storyJorge Ortiz
 
Core Data in Modern Times
Core Data in Modern TimesCore Data in Modern Times
Core Data in Modern TimesJorge Ortiz
 

Plus de Jorge Ortiz (20)

Tell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature FlagsTell Me Quando - Implementing Feature Flags
Tell Me Quando - Implementing Feature Flags
 
Unit Test your Views
Unit Test your ViewsUnit Test your Views
Unit Test your Views
 
Control your Voice like a Bene Gesserit
Control your Voice like a Bene GesseritControl your Voice like a Bene Gesserit
Control your Voice like a Bene Gesserit
 
Kata gilded rose en Golang
Kata gilded rose en GolangKata gilded rose en Golang
Kata gilded rose en Golang
 
CYA: Cover Your App
CYA: Cover Your AppCYA: Cover Your App
CYA: Cover Your App
 
Refactor your way forward
Refactor your way forwardRefactor your way forward
Refactor your way forward
 
201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SG201710 Fly Me to the View - iOS Conf SG
201710 Fly Me to the View - iOS Conf SG
 
Home Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinHome Improvement: Architecture & Kotlin
Home Improvement: Architecture & Kotlin
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowers
 
Architecting Alive Apps
Architecting Alive AppsArchitecting Alive Apps
Architecting Alive Apps
 
iOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h editioniOS advanced architecture workshop 3h edition
iOS advanced architecture workshop 3h edition
 
Clean architecture workshop
Clean architecture workshopClean architecture workshop
Clean architecture workshop
 
Escape from Mars
Escape from MarsEscape from Mars
Escape from Mars
 
Dependence day insurgence
Dependence day insurgenceDependence day insurgence
Dependence day insurgence
 
Architectural superpowers
Architectural superpowersArchitectural superpowers
Architectural superpowers
 
TDD for the masses
TDD for the massesTDD for the masses
TDD for the masses
 
7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOS7 Stages of Unit Testing in iOS
7 Stages of Unit Testing in iOS
 
TDD by Controlling Dependencies
TDD by Controlling DependenciesTDD by Controlling Dependencies
TDD by Controlling Dependencies
 
Unit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after storyUnit testing in swift 2 - The before & after story
Unit testing in swift 2 - The before & after story
 
Core Data in Modern Times
Core Data in Modern TimesCore Data in Modern Times
Core Data in Modern Times
 

Dernier

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%+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
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
+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
 
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 studentsHimanshiGarg82
 
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..pdfPearlKirahMaeRagusta1
 
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
 
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...panagenda
 
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-learnAmarnathKambale
 
%+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
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 

Dernier (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%+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...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
+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
 
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
 
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
 
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
 
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...
 
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
 
%+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...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 

Building for perfection