- Path::Dispatcher
-
This talk will give a brief overview of Path::Dispatcher's features. Then the meat of the talk will describe how its flexible design has met the challenges thrown at it, and how Path::Dispatcher's sibling rival, Path::Router, would have fared.
- Inline::C
-
A brief 5-minute introduction to Inline::C. In Japanese! I wrote the talk in English and then translated it, so English speakers will be able to read it too. :)
- Nonhierarchical OOP
-
The current trend for new programming languages seems to be to include more and more nonhierarchical OOP features. Some examples are new-style interfaces in Google's Go, traits in Scala and Fortress, and roles in Perl 6. This talk will focus on roles as provided by Perl 5's Moose object system, as that seems to have the most uptake and is most relevant for OSDC.tw's audience. Furthermore, because of roles' "class building-block" nature, they are perhaps the best fit for open source of any nonhierarchical system thus far.
- Surviving in the Cruel, Unforgiving World (video)
-
This talk was very informal and impromptu. I blathered on about TAEB's design, mostly about making proper use of object-oriented design. If I give this talk again I will definitely write slides because there is a lot of good design in TAEB. Without slides I think it bored the people who didn't know much about NetHack. On the other hand, it enchanted those who did.
- (Parameterized) Roles (video)
-
Roles are an excellent object-oriented tool both for allomorphism and for reuse. Roles can combine with conflict detection. This eliminates accidental shadowing of methods that is painful with multiple inheritance and mixins. Parameterized roles (via MooseX::Role::Parameterized) improve the reusability of roles by letting each consumer cater the role to its needs.
- API Design (video)
-
Too few projects demand good API design as a critical goal. A clean and extensible API will pay for itself many times over in fostering a community of plugins. We certainly cannot anticipate the ways in which our users will bend our modules, but designing an extensible system alleviates the pain. There are many lessons to be learned from Moose, HTTP::Engine and IM::Engine, Dist::Zilla, KiokuDB, Fey, and TAEB.
- Extending Moose for Applications
-
The real power of Moose rests in its extensibility. By subclassing Moose's metaclasses, you can augment and change Moose's behavior to suit your application's needs. This extensibility is powered by the meta-object protocol of Moose's foundation, Class::MOP. This talk focuses on domain-specific metaprogramming, particularly with traits.
- Introduction to Moose
-
Yet another introductory Moose talk. What separates this from other Moose Intro talks is that it focuses entirely on the immediate time-saving benefits of Moose. No mention of Class::MOP (surely an advanced topic) is made. This talk covers most options of 'has', method modifiers, and roles.
- Devel::REPL
-
Devel::REPL is an excellent addition to your toolkit. It is an interactive shell for Perl; you type in a line of Perl code and Devel::REPL will evaluate it. This talk introduces Devel::REPL and Carp::REPL. It then delves into the design of Devel::REPL, and how its strong use of roles cleanly supports extensibility.
- Template::Declare
-
Template::Declare is a novel templating system written in Perl. 'TD' has a very pleasant block-oriented syntax. This talk introduces its features and shortcomings, then describes how it is implemented.
These talks are licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
