SlideShare una empresa de Scribd logo
1 de 261
Descargar para leer sin conexión
Perl 5
Today, Tomorrow, and Christmas
The Perl Dev That Was
The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed
  how the release cycle works
The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed
  how the release cycle works
- that was three years ago (!!)
The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed
  how the release cycle works
- that was three years ago (!!)
- hopefully this is the last time we need to talk
  about the old ways
The Old Days
                5.9.0 5.9.1 5.9.2
blead

        5.8.0   5.8.1         5.8.2
maint
                                      5.10.0
The Old Days
The Old Days

- what merits a new dev release?
The Old Days

- what merits a new dev release?
- when is a new major release done?
The Old Days

- what merits a new dev release?
- when is a new major release done?
- what can get backported?
The Old Days

- what merits a new dev release?
- when is a new major release done?
- what can get backported?
- i.e., how stable is a stable release?
When I say so is when!
When I say so is when!

- not a terrible idea in theory
When I say so is when!

- not a terrible idea in theory
- but in practice, it led to very long waits for
  new features to be usable
When I say so is when!

- not a terrible idea in theory
- but in practice, it led to very long waits for
  new features to be usable
- ...which led to bad designs surviving
- worse, the pumpking is now busy doing
- worse, the pumpking is now busy doing
  - "cherrymaint"
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
  - release "paperwork"
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
  - release "paperwork"
  - cat herding (read: arguing with angries)
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
  - release "paperwork"
  - cat herding (read: arguing with angries)
- ...but is actually a hugely valuable coder
The Interregnum
The Interregnum

- the 5.10 crisis
The Interregnum

- the 5.10 crisis
- the San Diego call
The Interregnum

- the 5.10 crisis
- the San Diego call
- 5.11 and the release engineers corps
The Interregnum

- the 5.10 crisis
- the San Diego call
- 5.11 and the release engineers corps
- any idiot can do it!
New Blead
        2011-06
         5.15.0
blead
New Blead
        2011-06   2011-07
         5.15.0    5.15.1
blead
New Blead
        2011-06   2011-07   2011-08
         5.15.0    5.15.1    5.15.2
blead
New Blead
        2011-06   2011-07   2011-08   2011-09
         5.15.0    5.15.1    5.15.2    5.15.3
blead
New Blead
        2011-06   2011-07   2011-08   2011-09   2012-05
         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9
blead
New Blead
        2011-06   2011-07   2011-08   2011-09   2012-05
         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9
blead

maint
                                                          2012-06
                                                           5.16.0
New Blead
        2011-06   2011-07   2011-08   2011-09   2012-05   2012-06
         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9    5.17.0
blead

maint
                                                          2012-06
                                                           5.16.0
New Blead
        David G.   Zefram      Rik     Stevan    Abigail   Zefram
         2011-06   2011-07   2011-08   2011-09   2012-05   2012-06
          5.15.0    5.15.1    5.15.2    5.15.3    5.15.9    5.17.0
blead

maint
                                                           2012-06
                                                            5.16.0
                                                             Rik
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06
         5.16.0
          Rik
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07
         5.16.0    5.16.1
          Rik         ?
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07   2012-09
         5.16.0    5.16.1    5.16.2
          Rik         ?        ?
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07   2012-09   2013-??
         5.16.0    5.16.1    5.16.2   5.16.2
          Rik         ?        ?         ?
Minimal Maint
Minimal Maint
- almost all dev. burden is kept in blead
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
- must be critical bug fix
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
- must be critical bug fix
- (which includes security)
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
- must be critical bug fix
- (which includes security)
- very effective! in fact, so effective that...
Multimaint
                 Zefram
                 2012-06
                  5.17.0
blead

maint-5.16
                 2012-06    2012-07   2012-09   2013-??
                  5.16.0     5.16.1    5.16.2   5.16.2
                   Rik          ?        ?         ?

maint-5.14
       2011-05
        5.14.0
         Jesse
New Cherrymaint
        Zefram
        2012-05
         5.17.0
blead

maint
        2012-05   2012-07   2012-09   2013-??
         5.16.0    5.16.1    5.16.2   5.16.2
          Rik         ?        ?         ?
New Cherrymaint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07   2012-09   2013-??
         5.16.0    5.16.1    5.16.2   5.16.2
          Rik         ?        ?         ?
Pumpking?
What is the Pumpking?
What is the Pumpking?
- the patch pumpkin
What is the Pumpking?
- the patch pumpkin
- the person with the conch
What is the Pumpking?
- the patch pumpkin
- the person with the conch
- the benevolent dictator for now
What is the Pumpking?
- the patch pumpkin
- the person with the conch
- the benevolent dictator for now
- was: the one who could do everything
What is the Pumpking?
- the patch pumpkin
- the person with the conch
- the benevolent dictator for now
- was: the one who could do everything
- now: the one who manages
Jesse and Rik
Jesse and Rik

- we get along well
Jesse and Rik

- we get along well
- we both want what is good for Perl 5
Jesse and Rik

- we get along well
- we both want what is good for Perl 5
- but we see the future very differently
Rik and Jesse
Rik and Jesse


- Jesse's "5.16 and Beyond" was inspired by his
  hopes and dreams
Rik and Jesse


- Jesse's "5.16 and Beyond" was inspired by his
  hopes and dreams
- This talk is inspired by my fears and anxieties
The Pumpking's Job
The Pumpking's Job


- ...is not to make sure perl gets better.
- It's to make sure perl doesn't get worse.
Designing Perl
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
- Only to the extent that the designs he offers
  are carried out.
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
- Only to the extent that the designs he offers
  are carried out.
- Saying "make it so" depends on having a crew
  who will make it so.
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
- Only to the extent that the designs he offers
  are carried out.
- Saying "make it so" depends on having a crew
  who will make it so.
- Instead, he or she is the decider.
How a Bill Becomes a Law
Mailing List Judo
Mailing List Judo

- how do you get your change applied?
Mailing List Judo

- how do you get your change applied?
- by avoiding controversy
Mailing List Judo

- how do you get your change applied?
- by avoiding controversy
- ...at least on the list
Syntax
Syntax

- perl programmers obsess over it
Syntax

- perl programmers obsess over it
- even when the semantics are the real
  problem
Syntax

- perl programmers obsess over it
- even when the semantics are the real
  problem

- ?->
Syntax

- perl programmers obsess over it
- even when the semantics are the real
  problem

- ?->
- letting a syntax discussion start can be fatal
Changing Anything
Changing Anything


- some argue that change itself is bad
Changing Anything


- some argue that change itself is bad
- "someone might be relying on this error"
Other Lunacy
Other Lunacy

- "Your patch is nice, but why don't we do
  fifteen other things along with it?"
Other Lunacy

- "Your patch is nice, but why don't we do
  fifteen other things along with it?"
- "There are serious problems with this patch,
  too large to fit in the margin of this email."
...and in reality...
...and in reality...

- These observations are true.
...and in reality...

- These observations are true.
- So the advice to "lobby in private" seems
  promising.
...and in reality...

- These observations are true.
- So the advice to "lobby in private" seems
  promising.
- Everybody wants to avoid a long p5p thread
...and in reality...

- These observations are true.
- So the advice to "lobby in private" seems
  promising.
- Everybody wants to avoid a long p5p thread
- …because p5p can be a horrible place.
U+1F4A9
U+1F4A9

- In most cases, everything I've just said is true.
U+1F4A9

- In most cases, everything I've just said is true.
- …and also crap.
U+1F4A9

- In most cases, everything I've just said is true.
- …and also crap.
- p5p has, in part, a culture of fear
U+1F4A9

- In most cases, everything I've just said is true.
- …and also crap.
- p5p has, in part, a culture of fear
- …of endless, horrible argument
Improving p5p
Improving p5p

- if discussion on p5p was not only reliably
  civil…
Improving p5p

- if discussion on p5p was not only reliably
  civil…
- …but also technically on point…
Improving p5p

- if discussion on p5p was not only reliably
  civil…
- …but also technically on point…
- contributors would want to engage in it
Improving p5p
Improving p5p

- we would still try to avoid controversy
Improving p5p

- we would still try to avoid controversy
- …but by reaching consensus, not with tricks
Improving p5p

- we would still try to avoid controversy
- …but by reaching consensus, not with tricks
- so the pumpking never needs to decide!
The Pumpking's Job
The Pumpking's Job

- What will I do with all that free time?
The Pumpking's Job

- What will I do with all that free time?
- I will try to improve the list's culture.
The Pumpking's Job

- What will I do with all that free time?
- I will try to improve the list's culture.
- My promise:
The Pumpking's Job

- What will I do with all that free time?
- I will try to improve the list's culture.
- My promise:
  - I will call out unreasonable arguments
    and, even more, unreasonable behavior.
The Pumpking's Job
The Pumpking's Job


- ...is to make sure p5p culture gets better.
The Final Decision
The Final Decision

- sometimes, controversy is unavoidable
The Final Decision

- sometimes, controversy is unavoidable
- there is no consensus on whether a new
  feature is a good idea
The Final Decision

- sometimes, controversy is unavoidable
- there is no consensus on whether a new
  feature is a good idea
- how can Rik still avoid having to decide?
CPAN, not perl
CPAN, not perl

- can the feature be implemented on CPAN?
CPAN, not perl

- can the feature be implemented on CPAN?
- if not, why not? can that be fixed?
CPAN, not perl

- can the feature be implemented on CPAN?
- if not, why not? can that be fixed?
- can its semantics be simulated for testing?
feature
feature

- can the feature be lexically hidden behind
  feature.pm?
feature

- can the feature be lexically hidden behind
  feature.pm?
- (remember, not every feature needs to be in a
  version bundle)
feature

- can the feature be lexically hidden behind
  feature.pm?
- (remember, not every feature needs to be in a
  version bundle)

- use    experimental
:=
use experimental ‘bind_op’;

my $y = “Foo bar”;
my $x := $y;
:=
use experimental ‘bind_op’;

my $y = “Foo bar”;
my $x := $y;


Feature “experimental_bind_op” is
not supported by Perl 5.22.0
Strategy of Last Resort
Strategy of Last Resort

- the change is controversial
Strategy of Last Resort

- the change is controversial
- and can't be prototyped on CPAN
Strategy of Last Resort

- the change is controversial
- and can't be prototyped on CPAN
- and can or can't go into feature.pm
Strategy of Last Resort

- the change is controversial
- and can't be prototyped on CPAN
- and can or can't go into feature.pm
- how do we decide?
The Final Decision
The Final Decision
- is the feature small and specific?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
- is the feature teachable?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
- is the feature teachable?
- what's the maintenance burden?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
- is the feature teachable?
- what's the maintenance burden?
- does it feel like it makes Perl more Perlish?
Perlishness
Perlishness


- I know it when I see it.
Perlishness


- I know it when I see it.
- "gets us further along our road map"
The Road Map
The Road Map

- I don't make one.
The Road Map

- I don't make one.
- I don't see the point. I don't implement
  perl.
The Road Map

- I don't make one.
- I don't see the point. I don't implement
  perl.
- Submitted patches are the roads
Pathfinding
Pathfinding
- Backward compatibility
Pathfinding
- Backward compatibility
- POLS
Pathfinding
- Backward compatibility
- POLS
- Utility
Pathfinding
- Backward compatibility
- POLS
- Utility
- Conceptual simplicity
Pathfinding
- Backward compatibility
- POLS
- Utility
- Conceptual simplicity
- Readability
Intelligent Design
Intelligent Design

- always the best way to build something
Intelligent Design

- always the best way to build something
- assuming sufficient intelligence
Intelligent Design

- always the best way to build something
- assuming sufficient intelligence
- and omnipotence
Intelligent Design

- always the best way to build something
- assuming sufficient intelligence
- and omnipotence
- i.e., great if you're God
Evolution
Evolution
- seems to have worked pretty well
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
- and millions of years
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
- and millions of years
- and all those extinct species
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
- and millions of years
- and all those extinct species
- and I still ended up with an appendix
Intelligent Evolution
Intelligent Evolution

- mutations are designed, not random
Intelligent Evolution

- mutations are designed, not random
- then further mutated in captivity
Intelligent Evolution

- mutations are designed, not random
- then further mutated in captivity
- and possibly slaughtered before reaching the
  wild
Recovering from Error
Oops
Oops

- so, Rik had to decide something
Oops

- so, Rik had to decide something
- and he made the wrong choice
Oops

- so, Rik had to decide something
- and he made the wrong choice
- and everybody can tell
Oops

- so, Rik had to decide something
- and he made the wrong choice
- and everybody can tell
- and he wants to fix it up so the new
  smartassign operator is not legacy
Experimental?
Experimental?

- was it marked experimental?
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
- ...in theory
Current Experiments
Current Experiments

- fork emulation
Current Experiments

- fork emulation
- lvalue subroutines
Current Experiments

- fork emulation
- lvalue subroutines
- weak references (!?)
Experimental?
Experimental?

- was it marked experimental?
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
- ...in theory
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
- ...in theory
- if not, we'll do a deprecation
Deprecation Cycle
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
2. start issuing warnings in 5.18
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
2. start issuing warnings in 5.18
3. keep issuing them in 5.20
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
2. start issuing warnings in 5.18
3. keep issuing them in 5.20
4. remove the behavior in 5.22
The Eternal Bug
The Eternal Bug

- some behaviors can't be detected and made
  fatal practically
The Eternal Bug

- some behaviors can't be detected and made
  fatal practically
- arybase feature: we could remove it
The Eternal Bug

- some behaviors can't be detected and made
  fatal practically
- arybase feature: we could remove it
- The Unicode Bug...
The Unicode Bug
The Unicode Bug


my $x = acquire_input;
The Unicode Bug


my $x = acquire_input;

$x .= “Á”; # <-- that’s an A-acute
The Unicode Bug


my $x = acquire_input;

$x .= “Á”; # <-- that’s an A-acute

print $x =~ /á/i ? ‘match’ : ‘no match’;
Features in Flight
pluggable syntax
(the MOP)
regexp class sets
regex class sets


$str = /A
  (?[a-z] - [aeiou])
z/x
casemod escapes
casemod escapes
casemod escapes

$input = <STDIN>;
casemod escapes

$input = <STDIN>;
# ricardo
casemod escapes

$input = <STDIN>;
# ricardo
# RICARDO
casemod escapes

$input = <STDIN>;
# ricardo
# RICARDO
# Ricardo
casemod escapes

$input = <STDIN>;
# ricardo
# RICARDO
# Ricardo

$str   = “uL$input”; # Ricardo
casemod escapes
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
# (?^u:N{U+41})
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
# (?^u:N{U+41})

qr<LN{LATIN CAPITAL LETTER A}>
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
# (?^u:N{U+41})

qr<LN{LATIN CAPITAL LETTER A}>
# (?^u:n{u+41})
ÅÂÃÄÉÃ
EBCDIC
smartmatch
The Future of ~~
The Future of ~~

- deprecate and remove?
The Future of ~~

- deprecate and remove?
- make pluggable with simple replacement?
The Future of ~~

- deprecate and remove?
- make pluggable with simple replacement?
- leave as is with giant warning sign?
The Future of ~~

- deprecate and remove?
- make pluggable with simple replacement?
- leave as is with giant warning sign?
- and then what about given/when?
magic flags
utf8 strictness
(??{{ ... }})
The Secret Roadmap
slim core
multiple cores
fatal implicit close()
fatal implicit close()
fatal implicit close()

{
fatal implicit close()

{
    use autodie;
fatal implicit close()

{
    use autodie;
    open my $fh, ‘>’, $filename;
fatal implicit close()

{
    use autodie;
    open my $fh, ‘>’, $filename;
    $fh->print( ... );
fatal implicit close()

{
  use autodie;
  open my $fh, ‘>’, $filename;
  $fh->print( ... );
} # should die if close fails!
better exceptions
better exceptions

my $x = try {
  $y / $z
} catch {
  return $Infinity
    if $_->tagged(‘divbyzero’);
  die $_;
}
MOP and pluggable OO
chars v. bytes
chars v. bytes
chars v. bytes

my $buf = $fh->readline;
chars v. bytes

my $buf = $fh->readline;

my $str = decode_utf8($buf);
chars v. bytes

my $buf = $fh->readline;

my $str = decode_utf8($buf);

STDOUT->print( $str );
chars v. bytes

my $buf = $fh->readline;

my $str = decode_utf8($buf);

STDOUT->print( $str );
# fatal or autoencode
autoboxing
autoboxing
autoboxing

@array->push(@list);
autoboxing

@array->push(@list);

$arrayref->push(@list);
autoboxing

@array->push(@list);

$arrayref->push(@list);

for ($x->values) { ... }
Any questions?
Thank you!

Más contenido relacionado

Similar a Perl 5: Today, Tomorrow, and Christmas

A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014Pete Cheslock
 
Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teamsSven Peters
 
OOD - Object orientated design
OOD - Object orientated designOOD - Object orientated design
OOD - Object orientated designRuberto Paulo
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
 
Perl 5.16 and beyond
Perl 5.16 and beyondPerl 5.16 and beyond
Perl 5.16 and beyondJesse Vincent
 
From Jurassic Park to Microservices
From Jurassic Park to MicroservicesFrom Jurassic Park to Microservices
From Jurassic Park to MicroservicesSven Ruppert
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againKiwamu Okabe
 
Audio and Video for Blogging (See: Podcasting)
Audio and Video for Blogging (See: Podcasting)Audio and Video for Blogging (See: Podcasting)
Audio and Video for Blogging (See: Podcasting)kris_smith
 

Similar a Perl 5: Today, Tomorrow, and Christmas (8)

A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014
 
Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teams
 
OOD - Object orientated design
OOD - Object orientated designOOD - Object orientated design
OOD - Object orientated design
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
 
Perl 5.16 and beyond
Perl 5.16 and beyondPerl 5.16 and beyond
Perl 5.16 and beyond
 
From Jurassic Park to Microservices
From Jurassic Park to MicroservicesFrom Jurassic Park to Microservices
From Jurassic Park to Microservices
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
 
Audio and Video for Blogging (See: Podcasting)
Audio and Video for Blogging (See: Podcasting)Audio and Video for Blogging (See: Podcasting)
Audio and Video for Blogging (See: Podcasting)
 

Más de Ricardo Signes

What's New in Perl? v5.10 - v5.16
What's New in Perl?  v5.10 - v5.16What's New in Perl?  v5.10 - v5.16
What's New in Perl? v5.10 - v5.16Ricardo Signes
 
Dist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN DistributionsDist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN DistributionsRicardo Signes
 
Perl 5.12 for Everyday Use
Perl 5.12 for Everyday UsePerl 5.12 for Everyday Use
Perl 5.12 for Everyday UseRicardo Signes
 
Antediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix FundamentalsAntediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix FundamentalsRicardo Signes
 
Perl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally InsanePerl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally InsaneRicardo Signes
 
Writing Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::CmdWriting Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::CmdRicardo Signes
 
Crafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::ExporterCrafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::ExporterRicardo Signes
 
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!Ricardo Signes
 

Más de Ricardo Signes (10)

What's New in Perl? v5.10 - v5.16
What's New in Perl?  v5.10 - v5.16What's New in Perl?  v5.10 - v5.16
What's New in Perl? v5.10 - v5.16
 
Dist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN DistributionsDist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN Distributions
 
Perl 5.12 for Everyday Use
Perl 5.12 for Everyday UsePerl 5.12 for Everyday Use
Perl 5.12 for Everyday Use
 
i &lt;3 email
i &lt;3 emaili &lt;3 email
i &lt;3 email
 
Dist::Zilla
Dist::ZillaDist::Zilla
Dist::Zilla
 
Antediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix FundamentalsAntediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix Fundamentals
 
Perl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally InsanePerl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally Insane
 
Writing Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::CmdWriting Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::Cmd
 
Crafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::ExporterCrafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::Exporter
 
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
 

Último

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Último (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Perl 5: Today, Tomorrow, and Christmas