Your SlideShare is downloading. ×
Making Frameworks Suck Less—IPC
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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 …

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Making Frameworks Suck Less terry chay International PHP Conference, Berlin 2009-05-26T09:00+200
  • 2. Roadmap Introduction
  • 3. Where I’m coming from
  • 4. Terry Chay goes to Zendcon Not about making frameworks suck less …so much as why frameworks suck.
  • 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. Roadmap Challenges and Choices
  • 7. Choices Writing software is about MAKING CHOICES ? !
  • 8. What is a design pattern? Has a name Solves a problem Independent of code that implements it Has consequences breadcrumbs tabs
  • 9. Pareto Principle
  • 10. Pareto Principle
  • 11. Ruby on Rails graph of rock and hard place text: rock, hard place, “here is ruby” (Frameworks)
  • 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. Roadmap Where Frameworks Rock
  • 14. Toy Sites
  • 15. “Enterprise”
  • 16. Standardization
  • 17. RAD
  • 18. Roadmap Where PHP Rocks
  • 19. Must keep with PHP’s easy simple direct ugly
  • 20. Brayism Tim Bray of Sun on developing in PHP…
  • 21. Brayism Tim Bray
  • 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. Roadmap Examples of Good Framework Design
  • 24. Solves errors Design patterns solve errors in design
  • 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. Roadmap Challenges and Choices in PHP
  • 27. graph of 40% 40% 60% use PHP don’t use PHP
  • 28. graph of rock and hard place PHP
  • 29. Bind lightly Loose coupling Loosly coupling graph with various ser vices mention comet mention map-reduce mntion search mention social-graph
  • 30. Play nice Story of memcache Java patterns Java and Javascript language constructs Even with Ruby (deployment)
  • 31. Especially with Ruby php strengths from shared - nothing ruby strengths from multi- threading cloud computing (vs. PHP hosted) GitHub, CruiseControl, etc.
  • 32. Roadmap Conclusion
  • 33. Conclusion Not “F— You!” Image of me “Blog This!” Appreciate Feedback…