SlideShare a Scribd company logo
1 of 98
moJoLicIoUS
A new hope.
I am Marcus
I work here:
Nordaaker Consulting
But we’re moving south
      in january:
Be sure to visit!
perl -Mojo -e'g("www.bbc.co.uk")
->dom("#news_container a")
->each(sub {
  b(shift->text)
  ->encode("UTF-8")->say
})'
Actually, it didn’t
happen just like that.
Sebastian Riedel
    @kraih
Took over Maypole.
 Wanted to make
  radical changes
Got
Booted
Created Catalyst.
Wanted to make
 radical changes
Got
Booted
mojolicious.org
Wanted to target
PHP developers & Perl
         6
Ease of install/porting
          ➜
   Only Perl5 core
    dependencies
• $ curl -L cpanmin.us | perl - Mojolicious
    Fetching http://search.cpan.org/CPAN/authors/id/K/KR/
    KRAIH/Mojolicious-0.999950.tar.gz ... OK
    Configuring Mojolicious-0.999950 ... OK
    Building and testing Mojolicious-0.999950 for
    Mojolicious ... OK
    Successfully installed Mojolicious-0.999950
•   Gratuitous App::cpanminus plug :)
Latest from github:
curl -L cpanmin.us | perl
         - http://
   lastest.mojolicio.us
A full
HTTP 1.1
compliant
  stack
Mojo::Transaction
Mojo::Message::Response
      Mojo::Cookie
       Mojo::URL
         +++
Test Driven
Development
RFC Driven
Development
PRAGMATIC
Next logical step:
Add a client on top of
     this stack.
Supports IPV6,
TLS,proxies, epoll,
     kqueue
Mojo == Lego
Built from reusable
       bricks.
Parallel
requests
my $callback = sub {

 print shift−>res−>body
};
$client−>get('http://mojolicious.org'

 
 
 
 
 
 
 
 => $callback);
$client−>get('http://search.cpan.org'

 
 
 
 
 
 
 
 => $callback);
$client−>start;
Form Handling
# Form post with exception handling
my $cpan = 'http://search.cpan.org/search';
my $search = {q => 'mojo'};
my $tx = $client−>post_form($cpan => $search);
if (my $res = $tx−>success) {
   print $res−>body
} else {
   my ($message, $code) = $tx−>error;
   print "Error: $message";
}
Oneliners


  Photo by http://www.flickr.com/photos/st3f4n/3951143570/
Collection of single
 letter commands.
g ➜ get
  d ➜ delete
f ➜ form post
   p ➜ post
    u ➜ put
w ➜ websocket
Special Cases
b ➜ byte stream,
  a ➜ Lite app
#ojo module
my $res = g( 'http://mojolicio.us',
         {'Content−Type' => 'text/plain'},
         'Hello!' );

perl -Mojo -e 'b(g("mojolicio.us")->dom->at("title")->text)->say'

perl -Mojo -E'g("bloomberg.com")->dom("a.story_link")->each(sub { say
shift->text; })'

perl -Mojo -E'g("digg.com")->dom("a.story-title")->each(sub { say pop, ". ",
shift->text })'

# Undocumented -Ofun Mojolicious cloud function:
perl -Mojo -e 'oO("http://www.reddit.com")->dom->find("a.title")-
>each(sub { Oo(pop . ". " . shift->text)->say })'
Mojo::DOM
Liberal XML Parser
Supports all CSS3
  selectors that
   make sense
*
 E[foo=”bar”]
   E:checked
    E:empty
  E:nth-child
E:first-of-type
    E:not(s)
       EF
      E>F
     ++++
-Ofun
 If you need
performance
 use libXML
DEBUG MODE:

MOJO_CLIENT_DEBUG=1 
   perl -Mojo -E’...’
# Streaming response
my $tx = $client−>build_tx(GET =>
       'http://mojolicious.org');
$tx−>res−>body(sub { print $_[1] });
$client−>start($tx);

# Custom socket
my $tx = $client−>build_tx(GET =>
       'http://mojolicious.org');
$tx−>connection($socket);
$client−>start($tx);
Big Body
  Just
 Works
$res->json
Automatic JSON
deserialization
WEBSOCKET REVOLUTION!

•HTML5 protocol for long running processes

•Mojo first Perl framework to add support

•perl -MMojolicious::Lite -e "websocket '/' =>
 sub {shift->receive_message(sub { shift-
 >send_message(shift)})}; shagadelic 'daemon'"

•github.com/vti - web socket goodness
•Suppports latest revision of the spec.
$client−>websocket(
'ws://websockets.org:8787' =>
sub {
  my $client = shift;
  $client−>on_message( sub {
    my ($client, $message) = @_;
    print "$messagen";
    $client−>finish;
  });
  $client−>send_message('hiya!');
})−>start;
Browser Support messy.
       Politics.
Use the Flash
  Fallback.
Mojolicious MVC
$ mojo generate lite_app tinyws
   [exist] /Users/marcus

   [write] /Users/marcus/tinyws

   [chmod] tinyws 744

• That was easy. Now let’s check out the contents of the file
#!/usr/bin/env perl
use Mojolicious::Lite;
get '/' => 'index';
get '/:groovy' => sub {
   my $self = shift;
   $self->render_text(
     $self->param('groovy'));
};
app->start;
__DATA__
@@ index.html.ep
% layout 'funky';
Yea baby!

@@ layouts/funky.html.ep
<!doctype html><html>
  <head><title>Funky!</title></head>
  <body><%== content %></body>
</html>
% ./tinyws
usage: ./tinyws COMMAND [OPTIONS]
Tip: CGI, FastCGI and PSGI environments can be automatically detected very
    often and work without commands.
These commands are currently available:
 cgi          Start application with CGI.
 daemon           Start application with HTTP 1.1 and WebSocket server.
 fastcgi        Start application with FastCGI.
 generate         Generate files and directories from templates.
 get          Get file from URL.
 hypnotoad         Start application with Hypnotoad.
 inflate        Inflate embedded files to real files.
 psgi          Start application with PSGI.
 routes         Show available routes.
 test         Run unit tests.
 version         Show versions of installed modules.
 daemon_prefork Start application with preforking HTTP 1.1 backend.

These options are available for all commands:
  --home <path> Path to your applications home directory, defaults to
              the value of MOJO_HOME or auto detection.
  --mode <name> Run mode of your application, defaults to the value of
              MOJO_MODE or development.
See './tinyws help COMMAND' for more information on a specific command.
Handles 3 different urls

•   /


• /*

•   /*/*
# ::Lite
get ‘/’ => ‘index’;
# sub refs for functions
post ‘/login’ => sub { .. };
# Placeholders & Actions:
get ‘/:foo’ => sub {},‘ctrl’
# All together
get '/everything/:stuff' => [stuff => qr/d+/]
=> {stuff => 23} =>
sub { shift->render('welcome'); }
ladder sub {
  my $self = shift
  # Authenticated
  my $name = $self->param('name') || '';
  return 1 if $name eq 'Bender';

    # Not authenticated
    $self->render('denied');
    return;
}
$ mojo generate app tinyws2

 [write] /Users/marcus/tinyws2/script/tinyws2

 [write] /Users/marcus/tinyws2/lib/tinyws2.pm

 [write] /Users/marcus/tinyws2/lib/tinyws2/Example.pm

 [write] /Users/marcus/tinyws2/t/basic.t

 [write] /Users/marcus/tinyws2/public/index.html

 [write] /Users/marcus/tinyws2/templates/not_found.html.ep

 [write] /Users/marcus/tinyws2/templates/exception.html.ep

 [write] /Users/marcus/tinyws2/templates/layouts/default.html.ep

 [write] /Users/marcus/tinyws2/templates/example/welcome.html.ep

Snipped out all the mkdir/chmod for brevity.
$r->route(‘/’)->to
 (controller=>‘foo’,action=> ‘bar’);
 ('lists#new', id => 1)->name('new');
 ('/:controller/:action/:id')->to
  ('example#welcome', id => 1)

# Bridges
my $auth=$r->bridge->to(‘auth#check’);
$auth->route(...)
Mojo::Template
% my $player=$self->stash(‘players’);
%= $player; # print
%== $player; # raw
<%= player %> <%== player %> # inline style
% # Normal comment
<% # inline comment %>

.ep - prepopulates stash for you
.epl - same templates, less magic
MojoX::Renderer::TT
MojoX::Renderer::Mason
MojoX::Renderer::XSLT
MojoX::Renderer::Xslate
MojoX::Renderer::CTPP2
MojoX::Renderer::YAML
default helpers
dumper
param
stash
layout
include
content
extends
url_for
->render
->render(template=>‘foo/bar’)
->render(controller=>‘foo’,action=>‘bar’)
->render(‘foo#bar’)
->render_text
->render_json
->render_inner
->render_partial
->pause / ->resume
->redirect_to / ->url_for
PLUGINS
Hook based
before_dispatch
after_dispatch
after_static_dispatch
after_build_tx
Also apropriate place to add types & renders &
custom routes extension.
Mojolicious::Plugin::AgentCondition - Agent Condition  
Mojolicious::Plugin::Charset - Default Charset  
Mojolicious::Plugin::DefaultHelpers - Default Helpers  
Mojolicious::Plugin::EpRenderer - EP Renderer  
Mojolicious::Plugin::EplRenderer -EPL Renderer 
Mojolicious::Plugin::HeaderCondition - Header Condition 
Mojolicious::Plugin::I18n Internationalization Plugin  
Mojolicious::Plugin::JsonConfig - JSON Configuration 
Mojolicious::Plugin::PodRenderer - POD Renderer 
Mojolicious::Plugin::PoweredBy - Powered By Plugin   
Mojolicious::Plugin::RequestTimer - Time requests
PSGI supported


out of the box
All glory to the
       Hypnotoad
•Production ready standalone server

•Hot deployment using unix signals

•Set up Worker threads, pid file, reverse proxy
 support through a simple config file

•Web Socket support.
$ mojo generate hypnotoad
[exists] /myapp/
[write] /myapp/hypnotoad.conf
{
     listen => ['http://*:8080'],
     workers => 4
};
Server:
"INT", "TERM"Shutdown server
"QUIT" Shutdown server gracefully
"TTIN" Increase worker pool by one
"TTOU" Decrease worker pool by one
"USR2" hot deployment.
Worker:
"INT", "TERM"Shutdown server
"QUIT" Shutdown server gracefully
$ perldoc Mojo::Server::Hypnotoad
Community
Big in Russia
Growing in Japan
-Ofun
     Every file in
  the distro has
  a Simpsons or
Futurama quote.
Test Driven
Development
You
provide
failing
test - sri
fixes
1.0 expected by
   christmas
this christmas
Learn More:
        Mojolicious::Guides
          mojolicious.org
      github.com/kraih/mojo

groups.google.com/group/mojolicious
#mojo on
irc.perl.org

More Related Content

What's hot

Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101hendrikvb
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkJeremy Kendall
 
Keeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro frameworkKeeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro frameworkJeremy Kendall
 
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Arc & Codementor
 
jQuery Plugin Creation
jQuery Plugin CreationjQuery Plugin Creation
jQuery Plugin Creationbenalman
 
Plugin jQuery, Design Patterns
Plugin jQuery, Design PatternsPlugin jQuery, Design Patterns
Plugin jQuery, Design PatternsRobert Casanova
 
Keeping it Small: Getting to know the Slim Micro Framework
Keeping it Small: Getting to know the Slim Micro FrameworkKeeping it Small: Getting to know the Slim Micro Framework
Keeping it Small: Getting to know the Slim Micro FrameworkJeremy Kendall
 
Slim RedBeanPHP and Knockout
Slim RedBeanPHP and KnockoutSlim RedBeanPHP and Knockout
Slim RedBeanPHP and KnockoutVic Metcalfe
 
YAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービスYAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービスYusuke Wada
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)andrewnacin
 
Extending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh PollockExtending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh PollockCaldera Labs
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty HammerBen Scofield
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud CastlesBen Scofield
 
PerlでWeb API入門
PerlでWeb API入門PerlでWeb API入門
PerlでWeb API入門Yusuke Wada
 
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -Yusuke Wada
 
Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5Yusuke Wada
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the FinishYehuda Katz
 

What's hot (20)

Developing apps using Perl
Developing apps using PerlDeveloping apps using Perl
Developing apps using Perl
 
Mojo as a_client
Mojo as a_clientMojo as a_client
Mojo as a_client
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101Web Apps in Perl - HTTP 101
Web Apps in Perl - HTTP 101
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
 
Keeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro frameworkKeeping it small - Getting to know the Slim PHP micro framework
Keeping it small - Getting to know the Slim PHP micro framework
 
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
Building Modern and Secure PHP Applications – Codementor Office Hours with Be...
 
jQuery Plugin Creation
jQuery Plugin CreationjQuery Plugin Creation
jQuery Plugin Creation
 
Plugin jQuery, Design Patterns
Plugin jQuery, Design PatternsPlugin jQuery, Design Patterns
Plugin jQuery, Design Patterns
 
Keeping it Small: Getting to know the Slim Micro Framework
Keeping it Small: Getting to know the Slim Micro FrameworkKeeping it Small: Getting to know the Slim Micro Framework
Keeping it Small: Getting to know the Slim Micro Framework
 
Slim RedBeanPHP and Knockout
Slim RedBeanPHP and KnockoutSlim RedBeanPHP and Knockout
Slim RedBeanPHP and Knockout
 
YAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービスYAPC::Asia 2010 Twitter解析サービス
YAPC::Asia 2010 Twitter解析サービス
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
Extending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh PollockExtending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh Pollock
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty Hammer
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud Castles
 
PerlでWeb API入門
PerlでWeb API入門PerlでWeb API入門
PerlでWeb API入門
 
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
 
Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
 

Similar to Mojolicious - A new hope

Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmsom_nangia
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmwilburlo
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php PresentationAlan Pinstein
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworksdiego_k
 
Curscatalyst
CurscatalystCurscatalyst
CurscatalystKar Juan
 
symfony on action - WebTech 207
symfony on action - WebTech 207symfony on action - WebTech 207
symfony on action - WebTech 207patter
 
Api Design
Api DesignApi Design
Api Designsartak
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server Masahiro Nagano
 

Similar to Mojolicious - A new hope (20)

Mojolicious
MojoliciousMojolicious
Mojolicious
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
 
Plack - LPW 2009
Plack - LPW 2009Plack - LPW 2009
Plack - LPW 2009
 
Write php deploy everywhere
Write php deploy everywhereWrite php deploy everywhere
Write php deploy everywhere
 
PSGI/Plack OSDC.TW
PSGI/Plack OSDC.TWPSGI/Plack OSDC.TW
PSGI/Plack OSDC.TW
 
Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
PhpBB meets Symfony2
PhpBB meets Symfony2PhpBB meets Symfony2
PhpBB meets Symfony2
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworks
 
Curscatalyst
CurscatalystCurscatalyst
Curscatalyst
 
symfony on action - WebTech 207
symfony on action - WebTech 207symfony on action - WebTech 207
symfony on action - WebTech 207
 
Sinatra for REST services
Sinatra for REST servicesSinatra for REST services
Sinatra for REST services
 
Api Design
Api DesignApi Design
Api Design
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
 
Docker, c'est bonheur !
Docker, c'est bonheur !Docker, c'est bonheur !
Docker, c'est bonheur !
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Mojolicious - A new hope

Editor's Notes

  1. \n
  2. CPAN id MRAMBERG \nFirst core developer to join the Catalyst framework.\n
  3. \n
  4. At the city center\n
  5. \nof a little city far north \n\n
  6. Where Polar bears and penguins walk the street\n
  7. And parrots are pining for the fjords\n
  8. Started together with Arne 3 years ago\nSurprisingly Nordic company\n\n
  9. We focus on mobile, lean, useful apps, mostly in Perl and Obj-c.\n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. 500 sqm\nStill within 3 minutes of Oslo central station\n
  16. Coworking in Oslo - Drop in &amp; regular\n
  17. Tonight&amp;#x2019;s feature presentation\n
  18. Present to you Mojolicious\nLWP for the Next Decade.\n
  19. \n
  20. Hoppy Frood from the south of Germany\nSometimes claims to be a bot\nKnown aliases kraih at Twitter, &amp;#x2018;sri&amp;#x2019; on irc\n\n
  21. First Time I heard of Sebastian - Maypole Mailing lists\nMaypole was originally developed by Simon Cozens, \nbut he decided to become a missionary in Japan.\n
  22. \n
  23. Catalyst had gathered steam.\nCore team of developers\n
  24. \n
  25. Took a break from Perl - Ruby and World of Warcraft\nCame back with Mojolicious - Originally a Framework Construction Kit\n
  26. \n
  27. \n
  28. \n
  29. Runs in 30 seconds (time to download, run test suite and install files). \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. Tell about nginx and status phrases.\n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. So, I showed a quick example of an Oneliner earlier\n
  43. ojo package is a ...\n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. (temp storage on filesystem)\n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. Continues on next slide\n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. Of course, if you&amp;#x2019;re like me, you can just use the TT renderer instead\nThere&amp;#x2019;s even a plugin to set it up for you.\n
  73. Or one of the other renderers on CPAN\n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. Like 60% of the IRC channel speaks russian.\nEarly Mojolicious presentations at russian Perl events.\n\n
  91. Twitter repeat bot.\n
  92. \n
  93. \n
  94. \n
  95. \n
  96. 0.999950 - release candidate\n
  97. \n
  98. \n