$30 off During Our Annual Pro Sale. View Details »

Past, Present, and Future: The Evolution of PHP Development. Nate Abele

fwdays
November 18, 2014

Past, Present, and Future: The Evolution of PHP Development. Nate Abele

fwdays

November 18, 2014
Tweet

More Decks by fwdays

Other Decks in Programming

Transcript

  1. Past, Present, and Future
    The Evolution of PHP Development
    November 15th — Kyiv, Ukraine
    Nate Abele
    Radify, Inc
    @nateabele
    [email protected]

    View Slide

  2. The Vanity Slide
    • Former lead developer, CakePHP
    • Founder, Li3 (a.k.a. Lithium)
    • Member, AngularUI team
    • Lead Developer, AngularUI Router
    • Architect-in-Chief, Radify
    • Highly opinionated, sometimes right
    • @nateabele / [email protected]

    View Slide

  3. Consulting · Training · Development
    http://radify.io

    View Slide

  4. “It’s difficult to make predictions, especially about the future.”
    — Niels Bohr

    View Slide

  5. “Americans have no past and no future. They live in an
    extended present.”
    — Alexis de Tocqueville

    View Slide

  6. “Americans have no past and no future. They live in an
    extended present.”
    — Alexis de Tocqueville
    Programmers

    View Slide

  7. Why study the past?

    View Slide

  8. 2000 — 2004
    • Smarty
    • PEAR
    • Web Application Component Toolkit

    View Slide

  9. 2005 — 2008
    • CakePHP
    • …etc.

    View Slide

  10. 2009 — 2012
    • Li3 (Lithium)
    • Symfony 2 / Symfony Components
    • Composer / Packagist

    View Slide

  11. 2011 — 2013
    • AngularJS
    • EmberJS
    • BackboneJS
    • etc.

    View Slide

  12. 2013 — 2014
    • HackLang
    • ReactPHP / Ratchet

    View Slide

  13. Trends
    • Real-time
    • Mobile
    • Apps: mobile + web + desktop
    • More all the things

    View Slide

  14. Back to basics

    View Slide

  15. Back to basics
    • What makes PHP great?
    • How do we do our jobs?

    View Slide

  16. PHP
    • Simple, get moving quickly
    • Large community / talent pool
    • Mature, good resources
    • Many high-quality tools

    View Slide

  17. Our Jobs
    http://blog.ircmaxell.com/search/label/Beyond

    View Slide

  18. Our Jobs
    Data
    Data
    Data
    Data
    Data
    UI
    UI
    UI
    UI
    UI

    View Slide

  19. Our Jobs
    Data
    Data
    Data
    Data
    Data
    UI
    UI
    UI
    UI
    UI
    PHP

    View Slide

  20. Our Jobs
    Data
    Data
    Data
    Data
    Data
    UI
    UI
    UI
    UI
    UI
    PHP

    View Slide

  21. Our Jobs
    Data
    Data
    Data
    Data
    Data
    UI
    UI
    UI
    UI
    UI
    PHP

    View Slide

  22. Architecture
    vs.
    Engineering

    View Slide

  23. How should we code?
    • One part of one problem

    View Slide

  24. How should we code?
    • One part of one problem
    • Composable
    • Clean boundaries

    View Slide

  25. https://destroyallsoftware.com/talks/boundaries

    View Slide

  26. Frameworks?

    View Slide

  27. https://www.youtube.com/watch?v=WpkDN78P884

    View Slide

  28. • Libraries
    • Design conventions
    Frameworks?

    View Slide

  29. • Libraries
    • Design conventions
    Frameworks?

    View Slide

  30. Where to go from here?
    • Better tools for working efficiently with large
    datasets
    • Better tools for designing hypermedia systems
    • Functional programming concepts

    View Slide

  31. Thanks!
    [email protected]
    • @nateabele

    View Slide

  32. Bonus

    View Slide

  33. Programming is not math!?!?

    View Slide

  34. x2 + 10x = 39
    vs.
    http://worrydream.com/MediaForThinkingTheUnthinkable/
    Programming is not math!?!?

    View Slide

  35. “Language is a user interface for ideas.”

    View Slide

  36. Writing unit tests sucks

    View Slide

  37. Set Theory: Domains
    { Set } =>
    f(x) =>
    { Domain }

    View Slide

  38. Set Theory: Domains
    { Internet } =>
    OpenSSL(x) =>
    { … … }

    View Slide

  39. Set Theory: Domains
    { Internet } =>
    Bash(x) =>
    { … … }

    View Slide

  40. Thanks!
    [email protected]
    • @nateabele

    View Slide