SlideShare a Scribd company logo
1 of 114
Download to read offline
Aristotle and the art
                             of software development
                                               Jonathan Dahl




                                  http://tumblon.com (work)
                                  http://zencoder.tv (product)
                                  http://railspikes.com (blog)

Friday, September 18, 2009
Or: what does Athens have to
                     do with Silicon Valley?
                                          Jonathan Dahl




                             http://tumblon.com (work)
                             http://zencoder.tv (product)
                             http://railspikes.com (blog)

Friday, September 18, 2009
Athens   Silicon Valley
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Ethics.


Friday, September 18, 2009
Friday, September 18, 2009
G




Friday, September 18, 2009
PG




Friday, September 18, 2009
PG-13




Friday, September 18, 2009
R




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Ethics.


Friday, September 18, 2009
What makes a good programmer?




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
What makes a good programmer?




Friday, September 18, 2009
What makes a good programmer?




Friday, September 18, 2009
Anatomy of an action


                                   Act - Effect
                                      Actor




Friday, September 18, 2009
Deontology (Kant)



                                Act - Effect
                                   Actor




Friday, September 18, 2009
Utilitarianism (Mill)



                                 Act - Effect
                                    Actor




Friday, September 18, 2009
Virtue (Aristotle)



                               Act - Effect
                                  Actor




Friday, September 18, 2009
Downsides




Friday, September 18, 2009
Symptoms




Friday, September 18, 2009
What kind of Agile?




Friday, September 18, 2009
What language?




Friday, September 18, 2009
Immanuel Kant

Friday, September 18, 2009
Königsberg




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
deontology
                             duty




Friday, September 18, 2009
Principles




Friday, September 18, 2009
Categorical Imperative

                      Act only according to that maxim by
                     which you can at the same time will that
                        it should become a universal law




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Deontological
                             software development




Friday, September 18, 2009
Don’t Repeat Yourself
                             100% Test Coverage
                              Write readable code




Friday, September 18, 2009
Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Process - Outcome
                                Participants




Friday, September 18, 2009
Determine the right process




Friday, September 18, 2009
(Determine the right principles)




Friday, September 18, 2009
Stick to the rules




Friday, September 18, 2009
“You have to follow every aspect of
    the process for it to work”




Friday, September 18, 2009
Follow the rules, even when you
   don’t think you’ll like the outcome




Friday, September 18, 2009
“This is just the way things are
                          done”




Friday, September 18, 2009
Ever-growing rules




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
XP Rules
   1.User stories are written.                   16.The customer is always available.
   2.Release planning creates the schedule.      17.Code must be written to agreed standards.
   3.Make frequent small releases.               18.Code the unit test first.
   4.The Project Velocity is measured.           19.All production code is pair programmed.
   5.The project is divided into iterations.     20.Only one pair integrates code at a time.
   6.Iteration planning starts each iteration.   21.Integrate often.
   7.Move people around.                         22.Use collective code ownership.
   8.A stand-up meeting starts each day.         23.Leave optimization till last.
   9.Fix XP when it breaks.                      24.No overtime.
   10.Simplicity.                                25.All code must have unit tests.
   11.Choose a system metaphor.                  26.All code must pass all unit tests before it can
   12.Use CRC cards for design sessions.         be released.
   13.Create spike solutions to reduce risk.     27.When a bug is found tests are created.
   14.No functionality is added early.           28.Acceptance tests are run often and the
   15.Refactor whenever and wherever             score is published.
   possible.




Friday, September 18, 2009
Don’t Repeat Yourself



                             Write clear, understandable code




Friday, September 18, 2009
development:
             adapter: mysql
             encoding: utf8
             database: app_development
             username: root
             password:

           test:
             adapter: mysql
             encoding: utf8
             database: app_test
             username: root
             password:

           production:
             adapter: mysql
             encoding: utf8
             database: app_production
             username: user
             password: password
Friday, September 18, 2009
standard:
      adapter: mysql
      encoding: utf8

    local:
      username: root
      password:

    development:
      <<: *standard
      <<: *local
      database: app_development

    test:
      <<: *standard
      <<: *local
      database: app_test

    production:
      <<: *standard
      database: app_production
      username: user
      password: password


Friday, September 18, 2009
<% local_password = "" -%>
   <% local_user = "root" -%>
   <% [{:name => "development", :user => local_user, :password => local_password},
       {:name => "test", :user => local_user, :password => local_password},
       {:name => "production", :user => "user", :password => "password"}
     ].each do |environment| -%>
   <%= environment[:name] %>
     adapter: mysql
     encoding: utf8
     database: app_<%= environment[:name] %>
     username: <%= environment[:user] %>
     password: <%= environment[:password] %>
   <% end -%>




Friday, September 18, 2009
What kind of agile?




Friday, September 18, 2009
Certification




Friday, September 18, 2009
Friday, September 18, 2009
John Stuart Mill




Friday, September 18, 2009
John Stuart Mill
                             Opposed slavery
                             Favored women’s suffrage
                             Free markets
                             (...with proper regulation)
                             Animal rights
                             Environmentalism




Friday, September 18, 2009
John Stuart Mill
                                       Opposed slavery
                                       Favored women’s suffrage
                                       Free markets
                                       (...with proper regulation)
                                       Animal rights
                                       Environmentalism


                             ...way before these things were cool


Friday, September 18, 2009
Utilitarianism




Friday, September 18, 2009
Greatest good
                             for the greatest number




Friday, September 18, 2009
The ends justify the means




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Utilitarian
                             software development




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Process - Outcome
                                Participants




Friday, September 18, 2009
Driven by experience




Friday, September 18, 2009
Ad hoc




Friday, September 18, 2009
Results-oriented




Friday, September 18, 2009
Willing to compromise




Friday, September 18, 2009
“Just get it done”




Friday, September 18, 2009
“Doesn’t have to be pretty”




Friday, September 18, 2009
Short term vs. long term




Friday, September 18, 2009
What kind of agile?




Friday, September 18, 2009
No Process




Friday, September 18, 2009
Friday, September 18, 2009
Lisp vs. Perl




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Philosophy




Friday, September 18, 2009
Philosophy
                               Ethics




Friday, September 18, 2009
Philosophy
                               Ethics
                              Politics




Friday, September 18, 2009
Philosophy
                               Ethics
                              Politics
                              Rhetoric




Friday, September 18, 2009
Philosophy
                               Ethics
                              Politics
                              Rhetoric
                             Aesthetics




Friday, September 18, 2009
Philosophy
                               Ethics
                               Politics
                              Rhetoric
                             Aesthetics
                             Psychology




Friday, September 18, 2009
Philosophy
                               Ethics
                               Politics
                              Rhetoric
                             Aesthetics
                             Psychology
                               Biology




Friday, September 18, 2009
Philosophy
                               Ethics
                               Politics
                              Rhetoric
                             Aesthetics
                             Psychology
                               Biology
                              Physics




Friday, September 18, 2009
Philosophy
                               Ethics
                               Politics
                              Rhetoric
                             Aesthetics
                             Psychology
                               Biology
                              Physics
                             Astronomy



Friday, September 18, 2009
Philosophy
                               Ethics
                               Politics
                              Rhetoric
                             Aesthetics
                             Psychology
                               Biology
                              Physics
                             Astronomy
                             Economics


Friday, September 18, 2009
Philosophy
                               Ethics
                               Politics
                              Rhetoric
                             Aesthetics
                             Psychology
                               Biology
                              Physics
                             Astronomy
                             Economics
                                Logic

Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
(practical) wisdom




Friday, September 18, 2009
(practical) wisdom
                             aiming at virtues




Friday, September 18, 2009
(practical) wisdom
                             aiming at virtues
    combined with moral strength




Friday, September 18, 2009

More Related Content

More from Jonathan Dahl

The impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityThe impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityJonathan Dahl
 
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelDesigning Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelJonathan Dahl
 
Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...Jonathan Dahl
 
Advanced API Design: how an awesome API can attract friends, make you rich, a...
Advanced API Design: how an awesome API can attract friends, make you rich, a...Advanced API Design: how an awesome API can attract friends, make you rich, a...
Advanced API Design: how an awesome API can attract friends, make you rich, a...Jonathan Dahl
 
Programming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashProgramming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashJonathan Dahl
 
Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Jonathan Dahl
 
Rails and alternative ORMs
Rails and alternative ORMsRails and alternative ORMs
Rails and alternative ORMsJonathan Dahl
 
EC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingEC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingJonathan Dahl
 
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Jonathan Dahl
 

More from Jonathan Dahl (9)

The impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityThe impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video quality
 
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelDesigning Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
 
Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...
 
Advanced API Design: how an awesome API can attract friends, make you rich, a...
Advanced API Design: how an awesome API can attract friends, make you rich, a...Advanced API Design: how an awesome API can attract friends, make you rich, a...
Advanced API Design: how an awesome API can attract friends, make you rich, a...
 
Programming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashProgramming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the Clash
 
Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)
 
Rails and alternative ORMs
Rails and alternative ORMsRails and alternative ORMs
Rails and alternative ORMs
 
EC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingEC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed Processing
 
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
 

Recently uploaded

Falcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon investment
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptxnandhinijagan9867
 
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service AvailableBerhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Availablepr788182
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGpr788182
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1kcpayne
 
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSCROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSpanmisemningshen123
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentationuneakwhite
 
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...NadhimTaha
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecZurliaSoop
 
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTSDurg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTSkajalroy875762
 
Nashik Call Girl Just Call 7091819311 Top Class Call Girl Service Available
Nashik Call Girl Just Call 7091819311 Top Class Call Girl Service AvailableNashik Call Girl Just Call 7091819311 Top Class Call Girl Service Available
Nashik Call Girl Just Call 7091819311 Top Class Call Girl Service Availablepr788182
 
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Adnet Communications
 
Putting the SPARK into Virtual Training.pptx
Putting the SPARK into Virtual Training.pptxPutting the SPARK into Virtual Training.pptx
Putting the SPARK into Virtual Training.pptxCynthia Clay
 
Falcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business PotentialFalcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business PotentialFalcon investment
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizharallensay1
 
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...ssuserf63bd7
 
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...meghakumariji156
 

Recently uploaded (20)

Falcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business GrowthFalcon Invoice Discounting: Empowering Your Business Growth
Falcon Invoice Discounting: Empowering Your Business Growth
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service AvailableBerhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1
 
Buy gmail accounts.pdf buy Old Gmail Accounts
Buy gmail accounts.pdf buy Old Gmail AccountsBuy gmail accounts.pdf buy Old Gmail Accounts
Buy gmail accounts.pdf buy Old Gmail Accounts
 
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSCROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
 
HomeRoots Pitch Deck | Investor Insights | April 2024
HomeRoots Pitch Deck | Investor Insights | April 2024HomeRoots Pitch Deck | Investor Insights | April 2024
HomeRoots Pitch Deck | Investor Insights | April 2024
 
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTSDurg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
 
Nashik Call Girl Just Call 7091819311 Top Class Call Girl Service Available
Nashik Call Girl Just Call 7091819311 Top Class Call Girl Service AvailableNashik Call Girl Just Call 7091819311 Top Class Call Girl Service Available
Nashik Call Girl Just Call 7091819311 Top Class Call Girl Service Available
 
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
 
Putting the SPARK into Virtual Training.pptx
Putting the SPARK into Virtual Training.pptxPutting the SPARK into Virtual Training.pptx
Putting the SPARK into Virtual Training.pptx
 
Falcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business PotentialFalcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business Potential
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
 
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
Horngren’s Cost Accounting A Managerial Emphasis, Canadian 9th edition soluti...
 
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
 

Aristotle and the Art of Software Development