SlideShare a Scribd company logo
<?php
 echo ($AgileFramework == $HappyDeveloper) ?
           “Rasmus, think again!” : die(‘PHP’);




   delicious.com          bookmarks.yahoo.com             addons.mozilla.org




            All sites above were created using a PHP Framework.
Who am I ?
Xinc - Lead Developer
Akelos Framework - Core Contributor
     BermiLabs.com - Partner
C, C++, C#
That’s not me!
Been there. Done that.
Got over it!
I am a Web Developer.

   Like you!
I am Pragmatic




 does the Job
  since 1995
1995
a star is
   born
Do you like Spaghetti?
Do you like Spaghetti?
                Warning:
The following slides contain spaghetti code.
The “Italian” Scripting Language




                                                                     * 1995
* Sample Snippet from 1995 (http://talks.php.net/show/froscon08/4)
The “Italian” Scripting Language
                                            ? ! ? ! ? ! ?!?!?!?




                                  ok, back then .. but now
                                  everything is better, no?
                                                                     * 1995
* Sample Snippet from 1995 (http://talks.php.net/show/froscon08/4)
Did I
grow up?
Did I
               grow up?


has grown up
But the manners?


                        Did I
                     grow up?


has grown up
“Spaghetti a la OOP” anyone?




                                                                     * 2005
* Sample Snippet from 2005 (http://talks.php.net/show/froscon08/5)
“Spaghetti a la OOP” anyone?

                                                                          at least stmts!


                                                                useless exception handling!




                                                                       wow! heredocs as
                                                                        view template!



                                                                             * 2005
* Sample Snippet from 2005 (http://talks.php.net/show/froscon08/5)
dont_get_me_wrong.php4
<?php
$dirty_coder = ‘Spaghetti coder’;
while ($iWasLearning /* in 1999 */) {
  echo “I was a $dirty_codern”;
}
I know what it’s like ...




              ... to maintain spaghetti code.
iChanged_in.php5
<?php
$everything /* became a */ = new Object();
$inPHP = ‘5’;
$andMixing = “<html>with $php was a sin</html>”;
$frameworks = “I created a lot of them!”;
Then I realized that ...
... knowing everything better
... reinventing the wheel
... organizing source code
... over and over again

is a pretty heavy load.
But there is help ...
... to make you a more relaxed,
more productive web developer.




                                  Disclaimer:
                                  The following slides are not the view of a sect
                                  or any kind of religion. Its just pragmatic!
If you could start fresh
               ... in a new job
       ... on a new project
If you could choose ...

         Don’t us               CAF*
                 e PHP?

                    Spaghetti
                                F rameworks




                                          * Create Another Framework
Don’t use PHP?
How much Spaghetti can you take?
Create Another Framework ?
Create Another Framework ?
Create Another Framework ?
Create Another Framework ?
Create Another Framework ?
Why should you use a Framework?




      You don’t need to reinvent the wheel
In fact, most of us should not ...
Not reinventing the wheel ...

                                      Framework                               No Framework
Lines of Code you need to write




                                                           Project Complexity


                                      ... makes you code less!
                                         Disclaimer: I do not trust any statistics, I did not invent myself.
                                              Graphs are representative to express a general fact.
But I am a coder! I want to code more!
Lines of Code you need to write   But writing more code ...




                                                                 Bugs


                                    ... results in more bugs!
                                      Disclaimer: I do not trust any statistics, I did not invent myself.
                                           Graphs are representative to express a general fact.
I (the developer)
need to be in control of everything.
Control the important stuff ...
                    Important                                       Basic




Without a framework                                             With a framework



  ... to create a useful application!
            Disclaimer: I do not trust any statistics, I did not invent myself.
                 Graphs are representative to express a general fact.
Good Frameworks ...
suspects
      you from the usual
  and a shield, which protects
Good Frameworks ...
     ... while leaving room
      for your creativity....

    ... provide a solid ...
        ... unit tested ...
             ... base ...
Let us have a look at some frameworks.
Framework or Library?
Component Libraries   weaker MVC   MVC Frameworks   stronger




                                         ...           ...
Framework or Library?

               Which one doMVC Frameworks
Component Libraries         I choose?
                      weaker MVC            stronger




                                   ...         ...
Framework or Library?
Component Libraries   weaker MVC   MVC Frameworks   stronger



                      +
                                         ...           ...
Choose a solid
MVC Framework




... and reuse components from libraries.
I am not going to tell you ...
... to choose a specific framework.
     (This is not an advertisement for a specific framework)
It’s up to your needs and likes.
It’s up to your needs and likes.

  .. only one thing ... if you hate configuration...
             don’t choose Symfony!
What does
agile software development
  have to do with frameworks?
Manifesto for Agile Software Development
                 (http://www.agilemanifesto.org)




Individuals and interactions over processes and tools
  Working software over comprehensive documentation
  Customer collaboration over contract negotiation
    Responding to change over following a plan
Ready to be agile?
Be agile: Responding to change




Stop fearing change. Accept it. Welcome it.
Does your current development process
         allow change easily?
Be agile
Customer Collaboration




Be transparent. About work. About timing.
Can you collaborate transparently?
Or do you need strong contracts
         to cover you ?
Be agile
Working Software




Unit tests are the best developer documentation.
Is your current software testable?
Or do you need to test manually,
       with a browser ?
Be agile
Individuals and Interaction




      The right team will do the best job.
Do you have a good team work?
     Or are you still building
hierachies and departments ?
If you answered
        one+ question(s) with

              “No ... “
you are probably not ready to be agile.
How can a framework help me here?
Design first.

Enduser centric design - Only data that is needed for
           interaction is of importance.
Test your MODELS and
   CONTROLLERS.

Tests first. Frameworks make it easy to test.
Honesty and Trust
Welcome change
  If a change breaks something,
 the unit tests will alarm you.
... still doubts?
But Rasmus said that* ...
 ... frameworks are performing poorly
       * http://tinyurl.com/frameworks-think-again
Ok, let me tell
you something about
Rasmus Lerdorf
Rasmus’ view on PHP


a simple tool for non-developers
“to solve the web problem”

.. if you cannot solve it easily with
PHP - push it to another layer* ...
* (Not everyone wants/can code php extensions)




Did I get you right Rasmus?
I got a message for you
Rasmus


Graduated Computer Scientists
are developing in PHP ...


... not just script kiddies.
Let us have a look at
Rasmus way of testing
   PHP frameworks.
Who is running the following
 Application for Business?
I am going to show you the
          source code for this
           money machine.




You need to sign a NDA before though!
Disclosed
Hello World Business Core


              <html>
              <head>                        </title>
                         hp ech o “Test” ?>
              <title><?p
               </head>
               <body>                  rld” ?>
                          o “Hello Wo
               <?php ech
                </body>
                </html>
puuuuuuh ... give me a second.
Warning: Ugly Slides ahead



Rasmus does his statistics about performance.




       Remember? I don’t trust statistics, I did not invent myself.
no comment.
Ok... maybe ONE.
Rasmus simplifies things ...
for the sake of understanding?
Rasmus simplifies things ...
for the sake of understanding?
         A bit too simple.
Rasmus is right.
        Frameworks suck
       for Hello World
         Applications. ;-)

           We evolved a bit since 1995...
Could someone please start a “hello business” example?
We want to make money
   become rich and famous.

 So a hello world app would maybe be
my second best choice for that purpose.
Ok, now seriously.
Frameworks
are slower than static <HTML/>
Is your primary concern Performance?
So either ...
your Application   is already that   BIG
 OR your creativity is too small
You reach the
limit of your Creativity
way before ...
... you reach the limit of




  Computing
  Power
Scaling is a problem all
 of us wish to have.
But let’s first
build that great application.
But let’s first
build that great application.

    ... which millions use!
Choose a
MVC Framework




     ... today
.. and concentrate on the creative part ...
.. let’s see a
   magic example
        of how easy
web application development
        can be!
A common problem: Search Engine




 Setting up a search engine in




    based on Hyperestraier
A common problem: Search Engine


The task       add a search feature
A common problem: Search Engine


Preparation
   Install hyperestraier:
   debian: #      apt-get install hyperestraier

   Setup / Start hyperestraier:
   debian: #      estmaster init /var/myindices
   debian: #      estmaster start /var/myindices
   Create API user and index at:
   http://admin:admin@localhost:1978
   Install search plugin:
   debian: akelos# ./script/plugin install acts_as_searchable
A common problem: Search Engine


Overview
  Step 1 - Model
  Enabling the search plugin on the model Video.
  Indexing existing videos.

  Step 2 - View
  Add a search form to the archives view.

  Step 3 - Controller
  Add a search action to the video’s archive.
  /archive/search
A common problem: Search Engine


Step 1    The MODEL and the Index
A common problem: Search Engine


Step 1    The MODEL and the Index
A common problem: Search Engine


Step 1    The MODEL and the Index
A common problem: Search Engine


Step 2        The Search VIEW
A common problem: Search Engine


Step 3      The CONTROLLER
A common problem: Search Engine


The result      searchable video blog
A common problem: Search Engine


Adding fulltext search ...


     on top of an existing application ...
A common problem: Search Engine


Adding fulltext search ...


       on top of an existing application ...
   ... will take you less than 20 min.
Easy, Pragmatic Solutions for your problems




              If you use a
         Framework!
If you are not already using a framework ...

     ... choose one and try it!
If you don’t want to choose a framework.
     Be ready for people joking
             about you .....
http://www.youtube.com/watch?v=p5EIrSM8dCA
Now that              know.
Tell your ...


  Boss                 Colleagues   Friends   The World


                YOU
If you feel like it
tweet me gently | twitter.com/arnoschn
  drop me a line | arno at bermilabs.com
  read about me | bermilabs.com/arno

More Related Content

Similar to Rasmus, Think Again! Agile Framework == Happy Php Developer

Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic Revisited
Adam Keys
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Nick Galbreath
 
Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014
michaelag1971
 

Similar to Rasmus, Think Again! Agile Framework == Happy Php Developer (20)

Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdmins
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic Revisited
 
Brutal refactoring, lying code, the Churn, and other emotional stories from L...
Brutal refactoring, lying code, the Churn, and other emotional stories from L...Brutal refactoring, lying code, the Churn, and other emotional stories from L...
Brutal refactoring, lying code, the Churn, and other emotional stories from L...
 
3stages Wdn08 V3
3stages Wdn08 V33stages Wdn08 V3
3stages Wdn08 V3
 
Chaos Engineering Talk at DevOps Days Austin
Chaos Engineering Talk at DevOps Days AustinChaos Engineering Talk at DevOps Days Austin
Chaos Engineering Talk at DevOps Days Austin
 
Spaghetti gate
Spaghetti gateSpaghetti gate
Spaghetti gate
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
Paris Web - Javascript as a programming language
Paris Web - Javascript as a programming languageParis Web - Javascript as a programming language
Paris Web - Javascript as a programming language
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
 
Back to basics simple, elegant, beautiful code
Back to basics   simple, elegant, beautiful codeBack to basics   simple, elegant, beautiful code
Back to basics simple, elegant, beautiful code
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)
 
Docker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatternsDocker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatterns
 
On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)
 
Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
 
Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014
 
Adventures in Asymmetric Warfare
Adventures in Asymmetric WarfareAdventures in Asymmetric Warfare
Adventures in Asymmetric Warfare
 
Trusting files (and their formats)
Trusting files (and their formats)Trusting files (and their formats)
Trusting files (and their formats)
 
Aug 2012 HUG: Hug BigTop
Aug 2012 HUG: Hug BigTopAug 2012 HUG: Hug BigTop
Aug 2012 HUG: Hug BigTop
 

Recently uploaded

Recently uploaded (20)

Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 

Rasmus, Think Again! Agile Framework == Happy Php Developer