Untitled No. 12

Untitled No. 12

I gave this talk at the Orlando Perl Workshop in 2010


Stevan Little

January 16, 2010


  1. hello

  2. Welcome to my talk, here are some of the modules

    I will be talking about
  3. Bread::Board is a Dependency Injection framework, available on CPAN

  4. Plack is Web Infastructure-ware written by miyagawa

  5. Plack::Middleware is the killer app of Plack

  6. Path::Router is a module available on CPAN

  7. ... and of course Moose

  8. But first let me toast Open Source, for all the

    collaboration and sharing of ideas that make it so much fun to participate in.
  9. There is vast knowledge and great ideas to be found

    out there, both in the ivory towers of CompSci departments and in other Open Source communities, it is time to rediscover some ...
  10. This is a great book with a lot of Lambda

    Calculus in it and the Y-Combinator is awesome, this kind of elegance and simplicity is not useful, but should be inspiring
  11. Smalltalk is a great system from which too steal from,

    Steve Jobs did it in the 80s, Ruby did it in the 90s and Moose did it in the 00s
  12. Haskell is mind-bendingly insane and strikingly beautiful at the same

  13. LISP is a wonderful language used by many really smart

    people, we can learn from them too
  14. Moose borrows shamelessly from all these technologies and more and

    brings them to Perl
  15. Miyagawa has been mining the knowledge of other Open Source

    communities to bring us Plack and the next generation of Perl web tools
  16. Now I would like to show you my latest experiment,

    bringing together the modules I mentioned earlier.
  17. The goal is simplicity and avoiding needless framework boilerplate or

    useless subclassing
  18. Here is an example of a simple counting program, over-engineered

    to illustrate how the pieces of an OX::Application fit together
  19. This is the core of the Bread::Board config, notice the

    circular dependency between View/Nib and Controller/Root, Bread::Board takes care of this.
  20. This is the routing spec, it defines the available URLs

    for the application and will automatically wire them to the controller dependencies
  21. Here is the model, very simple plain old Moose class

  22. Here is the controller, also a simple plain old Moose

  23. This is an experiment in making TT work in a

    way that is conceptually similar to Cocoa (the Mac OS X framework)
  24. This is our .psgi file, it is so simple and

    clean :)
  25. This is our .psgi file evolved to take advantage of

    some Plack::Middleware
  26. Web apps should be easily testable too, here we fetch

    Bread::Board services to test.
  27. Here we use the Test::Path::Router to check the URLs our

    web application will respond too
  28. Here we use Plack::Test to test our web application

  29. Holy crap, look at all the plugs in that outlet!