Making Frameworks Suck Less—IPC


Published on

The PDF version of the slides deck from my talk on "Making Frameworks Suck Less" given at International PHP Conference in Berlin, Germany on May 2009

Instead of trying to say why one framework is "the best" it's better to talk about realities that apply to all frameworks in our problem space. What are the challenges and choices in framework design? How is our choice of PHP augment those strengths and in what areas does that choice face challenges?

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Making Frameworks Suck Less—IPC

  1. 1. Making Frameworks Suck Less terry chay International PHP Conference, Berlin 2009-05-26T09:00+200
  2. 2. Roadmap Introduction
  3. 3. Where I’m coming from
  4. 4. Terry Chay goes to Zendcon Not about making frameworks suck less …so much as why frameworks suck.
  5. 5. PHP Coding Web Development OOP Engine g11n - What is a design pattern? - What are differences between PHP4 - What is the difference between -- why is it not an algorithm? and PHP5? i18n and l10n? -- why use patterns at all? - How does PHP4 handle objects - How would you solve that -- Example strangely? architecturally? -- what is a quot;consequencequot; mean? -- How does PHP5 fix this - How does PHP deal with it? -- consequences of the pattern -- what is quot;is aquot; relationship? -- Name an interesting PHP quirk you - What are some pitfalls to avoid in -- How does that relate to design came across in your last project? character handling? patterns? - How are defines different from SQL injection - How is HTML templating MVC? variables? - what is an SQL injection attack? -- how is not like MVC? -- Faster? -- How do you fix it? (three ways) - Name a principle of package reuse? -- Better? -- Which one would you do? - Strengths and weaknesses of - How does the Zend Engine work -- How do you create a security frameworks? (basically)? (Or explain the what a JVM audit point? - In design define is__ OTHER ATTACKS -- poor design example: (rigidity, fragility, -- How does code caching work? - what is session fixation immobility, viscosity, needles complexity, -- Why is Java and dotNet faster than - what is XSS needless repetition, opacity) PHP ever will be? - what is XSRF -- Single Responsibility Principle? -- how is javac different than gcc? -- Can you give an example about -- Open-Close Principle? settings XSRF to determine login state on a -- Liskov Substitution Principle? - What is quot;safe modequot;? remote site? -- Dependency-Inversion Principle? - How do you code around Philosophy -- Interface Segregation Principle?- quot;magic_quotes_gpc=onquot;? - What does quot;filter-input escape Principle of Package reuse -- Release-Reuse Equivalenc? - What is PEAR? outputquot; mean? -- Common Closure Principle? -- How do you install a PEAR library -- example of filter? -- Common Reuse Principle? -- How does PEAR handle errors? -- example of escape? -- Acyclic Dependencies Principle? - What is a PHP extension? -- what is quot;magic quotesquot; and why is -- Stable Dependencies Principle? -- Why extensions at all? what are the it bad? -- Stable Abstractions Principle? advantages of extensions HTML/CSS - HTTP protocol -- what are the disadvantages of - Example of browser rendering - what is the difference between post and extensions? quirk? get? -- How do you compile extensions? -- Workaround? -- name some HTTP headers? -- Where repositories for extensions?… - Box model?… - areas of race conditions in PHP?…
  6. 6. Roadmap Challenges and Choices
  7. 7. Choices Writing software is about MAKING CHOICES ? !
  8. 8. What is a design pattern? Has a name Solves a problem Independent of code that implements it Has consequences breadcrumbs tabs
  9. 9. Pareto Principle
  10. 10. Pareto Principle
  11. 11. Ruby on Rails graph of rock and hard place text: rock, hard place, “here is ruby” (Frameworks)
  12. 12. The Database Ahmdahl’s law and abstraction (Premature Optimization) Database Scalability (“Moore’s Law” punt, vs. master-slave, vs. vertical vs. horizontal Independence vs. Portability
  13. 13. Roadmap Where Frameworks Rock
  14. 14. Toy Sites
  15. 15. “Enterprise”
  16. 16. Standardization
  17. 17. RAD
  18. 18. Roadmap Where PHP Rocks
  19. 19. Must keep with PHP’s easy simple direct ugly
  20. 20. Brayism Tim Bray of Sun on developing in PHP…
  21. 21. Brayism Tim Bray
  22. 22. Glue Originally 3 tier Now glue: client, db, memcache, smtp (virality), http services (REST, XMLRPC, SOAP), http scraping, UDP logging, other long-lived services (search, map reduce, message q, cometd)
  23. 23. Roadmap Examples of Good Framework Design
  24. 24. Solves errors Design patterns solve errors in design
  25. 25. Other stuff configuration, registry caching (memcache = L2) where? readthrough, output, db publish-subscribe (inversion of control, AQS) i18n/l10n A-B testing, analytics, loggin
  26. 26. Roadmap Challenges and Choices in PHP
  27. 27. graph of 40% 40% 60% use PHP don’t use PHP
  28. 28. graph of rock and hard place PHP
  29. 29. Bind lightly Loose coupling Loosly coupling graph with various ser vices mention comet mention map-reduce mntion search mention social-graph
  30. 30. Play nice Story of memcache Java patterns Java and Javascript language constructs Even with Ruby (deployment)
  31. 31. Especially with Ruby php strengths from shared - nothing ruby strengths from multi- threading cloud computing (vs. PHP hosted) GitHub, CruiseControl, etc.
  32. 32. Roadmap Conclusion
  33. 33. Conclusion Not “F— You!” Image of me “Blog This!” Appreciate Feedback…