My ramblings about how I think the Perl community should target newcomers in its marketing efforts, and how I've come to appreciate Python and Java's standard libraries and toolsets.
2. How did I get here?
• C since forever
• 15+ years of Perl
• 4 years of Java
• 9 months of Python
3. Fresh fish
• No one has the time
• No one has the resources
• Ultimately, no one cares
4. But you can just hack
it!
• Point missed
• We are not the audience, the pimple-faced
kids are
• And uninformed C[TI]Os
• This is really about the M word
18. package MyClass;
use strict;
use warnings;
use Moose;
use namespace::clean -except =>
‘meta’;
use feature qw(say);
use v5.10;
use Modern::Perl qw(2009);
26. I <3 Dist::Zilla
• Perl’s Maven (except better)
• Bootstrap, generate docs, run tests,
package, manage versions, release
• Support for different types of
projects, via templates
• Extensible through plugins
Perl programmer all my life after university, with the occasional bout of C.\nTook a job at a Java shop 4 years ago, and as luck would have it ended up in a Python one earlier this year.\n
Newcomers have watched the screencast and drank the Kool-Aid. We can show them screencasts, but at some point they&#x2019;ll actually have to build and ship something.\n
&#x201C;Oh, the beauty is that it&#x2019;s so extensible!&#x201D;\nYes, *I and you* can. The newcomers can&#x2019;t, and shouldn&#x2019;t be expected to do so.\nThe point is there are alternatives to Perl where you don&#x2019;t have to hack it.\nAnd if you take that up the chain, it&#x2019;s even worse. All that matters is *shipping*.\n
Perl was fabulous at segmentation, selling to a lot of different people, and regularly upselling them.\nIt has not created new needs, e.g., OO after Java, functional with Haskell, Erlang.\nWe certainly don&#x2019;t seem to find new markets, and seem to be playing catch-up.\n
\n
When was the last time one of the cool kids launched with a Perl API? And why should they, if apparently the majority of new-ish programmers don&#x2019;t use it? This is of course a self-fulfilling prophecy, and the cycle perpetuates itself.\n(Go Cardless, AWS, Rackspace, Streak, Spark Devices, OpenStack)\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren&#x2019;t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
I quite liked the little squiggles before variable names, because I could see what it was. I&#x2019;ve shot myself in the foot in languages that don&#x2019;t have this feature exactly 0 times.\nMoose has become the cheap way out of arguments.\nThe thing is, the competition doesn&#x2019;t need anything like it. Or at all.\n
This helps you catch frequent mistakes.\n
1 line saved, woohoo!\n
Much better.\n
\n
\n
Oops. UI inconsistency.\n
That makes sense.\n
\n
\n
\n
\n
Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe &#x2018;I&#x2019; in IDE means &#x2018;integrated&#x2019;.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe &#x2018;I&#x2019; in IDE means &#x2018;integrated&#x2019;.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe &#x2018;I&#x2019; in IDE means &#x2018;integrated&#x2019;.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe &#x2018;I&#x2019; in IDE means &#x2018;integrated&#x2019;.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe &#x2018;I&#x2019; in IDE means &#x2018;integrated&#x2019;.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe &#x2018;I&#x2019; in IDE means &#x2018;integrated&#x2019;.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n