$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Untitled No. 12
Search
Stevan Little
January 16, 2010
Programming
1
200
Untitled No. 12
I gave this talk at the Orlando Perl Workshop in 2010
Stevan Little
January 16, 2010
Tweet
Share
More Decks by Stevan Little
See All by Stevan Little
Perl's not dead, .. it got better!
stevan_little
1
740
Perl's Syntactic Legacy
stevan_little
0
1.1k
Installation & Configuration of Modern Perl
stevan_little
2
690
Moe Status Update
stevan_little
1
1.3k
Perl - The Detroit of Scripting Languages
stevan_little
14
13k
Perl is not Dead, it is a Dead End
stevan_little
38
46k
Perl 5 MOP
stevan_little
9
2k
REST from the trenches
stevan_little
6
1.5k
DC-Baltimore Perl Workshop - Keynote
stevan_little
4
850
Other Decks in Programming
See All in Programming
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
110
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
400
gunshi
kazupon
1
110
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
120
マスタデータ問題、マイクロサービスでどう解くか
kts
0
120
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.4k
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
170
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
開発に寄りそう自動テストの実現
goyoki
2
1.4k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
290
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
260
Designing for humans not robots
tammielis
254
26k
The SEO Collaboration Effect
kristinabergwall1
0
310
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
KATA
mclloyd
PRO
33
15k
Building an army of robots
kneath
306
46k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
75
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Agile that works and the tools we love
rasmusluckow
331
21k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
120
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Transcript
hello
Welcome to my talk, here are some of the modules
I will be talking about
Bread::Board is a Dependency Injection framework, available on CPAN
Plack is Web Infastructure-ware written by miyagawa
Plack::Middleware is the killer app of Plack
Path::Router is a module available on CPAN
... and of course Moose
But first let me toast Open Source, for all the
collaboration and sharing of ideas that make it so much fun to participate in.
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 ...
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
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
Haskell is mind-bendingly insane and strikingly beautiful at the same
time
LISP is a wonderful language used by many really smart
people, we can learn from them too
Moose borrows shamelessly from all these technologies and more and
brings them to Perl
Miyagawa has been mining the knowledge of other Open Source
communities to bring us Plack and the next generation of Perl web tools
Now I would like to show you my latest experiment,
bringing together the modules I mentioned earlier.
The goal is simplicity and avoiding needless framework boilerplate or
useless subclassing
Here is an example of a simple counting program, over-engineered
to illustrate how the pieces of an OX::Application fit together
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.
This is the routing spec, it defines the available URLs
for the application and will automatically wire them to the controller dependencies
Here is the model, very simple plain old Moose class
Here is the controller, also a simple plain old Moose
class
This is an experiment in making TT work in a
way that is conceptually similar to Cocoa (the Mac OS X framework)
This is our .psgi file, it is so simple and
clean :)
This is our .psgi file evolved to take advantage of
some Plack::Middleware
Web apps should be easily testable too, here we fetch
Bread::Board services to test.
Here we use the Test::Path::Router to check the URLs our
web application will respond too
Here we use Plack::Test to test our web application
Holy crap, look at all the plugs in that outlet!