The Perl Conference 2018

Sessions

In addition to our regular sessions on Monday, June 18 through Wednesday, June 20, we also have a selection of tutorials on Sunday the 17th, Thursday the 21st, and Friday the 22nd.

A Punch Card Ate My Program!

Walt Mankowski | Mon, 6/18 at 5:10 pm | 50 minutes | Ballroom A

COBOL is the Rodney Dangerfield of programming languages — it doesn’t get any respect. COBOL is routinely denigrated for its verbosity and dismissed as archaic, and for good reason: COBOL bears little to no resemblance to modern programming languages. Yet COBOL is far from a dead language. It processes an estimated 85% of all business transactions, and 5 billion lines of new COBOL code are written every year!

At a past YAPC I argued that COBOL isn’t such a bad language. This year it’s time for an opposing point of view. We’ll journey deep into the past to recreate a retro bug that could only happen in COBOL! Our travels will include:

syntactic white space!
scotch tape!
dueling compiler options!
virtual punch cards!
sentences!
code blocks!
periods!

No punch cards were harmed in the creation of this talk.

Audience: Everyone
Track: Development

A static site generator should be your next language learning project

John Jacobs Anderson | Wed, 6/20 at 11:10 am | 20 minutes | Ballroom C

When learning a new language, some folks prefer to read the language documentation, or work through simple exercises like you might find on http://exercism.io — but I prefer to have something more like an actual project. I find that holds my focus a little better, and that I do a better job of absorbing the new language syntax and features if I’m using them for something real.

In this talk, I’m going to outline why writing a static website generator is the perfect task for this sort of language learning project. I’ll cover the code you’ll need to write in order to develop a simple template-based website generation system, and show how this particular project actually manages to hit all the points you need to understand to claim basic understanding of a language.

Audience: Everyone
Track: Community

Abstraction, Encapsulation, Polymorphism, and Inheritance — The problems we solve with them, the problems they create, and how we achieve them with Perl

David Oswald | Tue, 6/19 at 10:10 am | 50 minutes | Ballroom C

We will discuss what are commonly known to be the four pillars of Object Oriented Programming, but that really are so much more than just pillars of OOP — They’re strategies for solving hard problems elegantly.

Audience: Everyone
Track: Beginner

Ambient Information or: My desk has 80k hits on YouTube

Michael La Grasta | Mon, 6/18 at 1:30 pm | 20 minutes | Ballroom A

The exponential growth of data collection is on a collision course with the demands of the attention economy. Making information available with zero effort and minimal distraction help us all. This is the goal of ambient information devices and Perl is uniquely well suited to this. This talk will introduce the concept of ambient information and demonstrate easily created devices including the “DeskLights” project previously featured in multiple Maker Faires and STEM exhibits. The desk was briefly mentioned in my 2016 Lightning Talk and generated a lot of interest. This talk should appeal to people of all technical levels and will progress from idea to prototype to coding to refinement over years of use.

Audience: Everyone
Track: Fun with Perl

Auto-Parallel Programming On The Cloud

Will 'the Chill' Braswell | Tue, 6/19 at 9:00 am | 50 minutes | Ballroom C

Learn how to write code which will automatically execute in parallel on the cloud platform of your choice.

Push your programming skills to the next level with cutting-edge transpiler technologies.

Create new software with performance capabilities never before possible.

You won’t spend years manually parallelizing your code.

You won’t need a million-dollar supercomputer.

The future is now.

Audience: Everyone
Track: Beginner

Bad Movie Night

David H. Adler | Tue, 6/19 at 7:00 pm | 300 minutes | Ballroom A

Bad Movie Night has become something of a tradition at YAPC/TPC over the years. If it isn’t clear, it is an evening of watching bad movies for those who enjoy that sort of thing.

Audience: Everyone
Track: BoF

Better testing with Test2-Suite

Chad Granum | Tue, 6/19 at 1:30 pm | 50 minutes | Ballroom B

This session will go over the tools of Test2 and Test2::Suite, how they compare to Test::More and similar tools. After this session you should be ready to take full advantage of Test2 for better/faster testing.

Audience: Everyone
Track: Development

Board Game Night

Lena Hand | Sun, 6/17 at 7:00 pm | 180 minutes | Arizona

Come play your favorite board game (hopefully you brought it!) with fellow Perlers! Bring a game or 2, or just bring you.

Audience: Everyone
Track: BoF

Building a Culture of Learning and Sharing

Graham TerMarsch | Mon, 6/18 at 1:30 pm | 20 minutes | Idaho

At ZipRecruiter, we still believe that “you learn something new every day”.

In early 2017, Graham started a casual “brown bag lunch” webinar series at ZipRecruiter, to share some of his experiences and knowledge with the team. Twenty-three talks later, we’ve had a ton of fun, discussed a wide range of topics, and learned a lot (not just about software development, but about how to run a successful discussion series).

Come listen to Graham talk about how it started, what worked, what didn’t work, and how you can start one up in your own organization.

Audience: Beginner
Track: Community

Building the Graphics of the DeLorean Digital Dash

Michael Conrad | Mon, 6/18 at 3:00 pm | 50 minutes | Ballroom A

Come see the code behind the dashboard! Learn a bit about OpenGL, how to quickly prototype things with it, and how to speed up your inner loops with a little Inline::C

Audience: Intermediate
Track: Fun with Perl

Care and Feeding of your User Group

Dave Jacoby | Mon, 6/18 at 5:10 pm | 50 minutes | Idaho

A panel session where organizers for groups like Chicago.pm, NewYork.pm and Purdue.pm discuss how create and maintain user groups.

Audience: Everyone
Track: Community

Console oriented websites and Perl 6: joining two worlds

Igor Chubin | Tue, 6/19 at 2:30 pm | 20 minutes | Ballroom A

Probably, you’ve already heard about console oriented services:
wttr.in (weather reporting service), rate.sx (cryptocurrencies
exchange rates service), cheat.sh (cheat sheets and documentation
service) just to name a few.

Several of them though originally were written in Python and Go
were rewritten in Perl 6, and are using Perl 6 now.

What was the reason to do it?
What console oriented services could bring
the Perl 6 community and what Perl 6 could bring
the console oriented sites, in particular cheat.sh,
cheat sheets and docementation service?
Those are the questions that we cover in this talk.

Audience: Beginner
Track: Perl 6

CPAN Pull Request Challenge

Kivanc Yazan | Wed, 6/20 at 7:00 pm | 180 minutes | Arizona

Work on improving CPAN modules, and submit pull requests!

Audience: Everyone
Track: BoF

Dancer From Scratch

Mickey Nasriachi | Mon, 6/18 at 4:10 pm | 50 minutes | Ballroom B

Let’s build a mini-Dancer like web-framework for the educational value and for fun.

Audience: Everyone
Track: Development

Discourse Without Drama

Ruth Holloway | Mon, 6/18 at 3:00 pm | 50 minutes | Idaho

These days, public discussion can seem really difficult and painful. Trolls making deliberately destructive comments, exaggerated dramatic statements and even abuse seems common, whether the discussion is online or in-person.

Many of us have experienced real pain and suffering in these discussions. How can we stop it?

Individuals and communities can take action to keep honest and valuable discussions from degenerating into useless drama. In this talk, Ruth shares ideas for managing your own perceptions of what is happening in a rancorous conversation. She shares a framework that enables you and your communities to vaccinate your discussions against trolls and drama, reclaiming useful public discourse for us all.

Audience: Everyone
Track: Community

Dist::Zilla and My Bundle

Dave Rolsky | Wed, 6/20 at 11:40 am | 20 minutes | Ballroom C

Dist::Zilla (dzil) is a fantastic tool for anyone who releases modules to CPAN. It automates many of the test and release steps, allowing you to focus on your code, not your packaging.

I’ll tell you what Dist::Zilla can do, then explain how I use it, and in particular how I’ve structured my dzil plugin bundle. A bundle takes dzil’s meta up another notch, making it much easier to apply a complex dzil config across many distributions.

Audience: Everyone
Track: Development

Event-driven programming in Perl

Charles McGarvey | Mon, 6/18 at 2:00 pm | 50 minutes | Ballroom B

Event-driven programming is a paradigm where programmers creates subroutines that get called when events occur. Events can be just about anything: timers expiring, new data becoming available to read from a socket, even humans clicking on things in an interactive program.

Event-driven programming definitely isn’t anything new, but there have been some interesting developments over the past ten years. Event-driven frameworks and applications have risen in popularity and are replacing systems built using outdated techniques. New methods and language features have been created to make event-driven programming nicer.

In this talk we’ll go over:

  • the language features in Perl that make event-driven programming happen,
  • some CPAN modules that offer the extra functionality you need.

This talk is somewhat geared toward beginners (either to Perl or to event-driven programming), but it may also be interesting to anyone wondering about the current state of event-driven programming in Perl.

Audience: Everyone
Track: Development

Fatpack it! Full featured Perl apps in a single file

Andrew Rodland | Tue, 6/19 at 2:30 pm | 20 minutes | Ballroom B

Perl is available on nearly every Unix system, old and new. Learn how to use App::FatPacker, Moo, and CLI::Osprey to write apps that are much more powerful than “just a script”, but still pack down to a single file that runs on any machine with a Perl interpreter, with no need to install dependencies from CPAN.

Audience: Everyone
Track: Development

Foswiki, And How To Redesign 20 Years Old Code

Vadim Belman | Mon, 6/18 at 2:00 pm | 50 minutes | Ballroom C

A story of modernizing old code of a great Foswiki project: how to start, what it requires, what decisions are to be made, and how not to lost track in process.

Audience: Everyone
Track: Beginner

Fun with robotics using Perl and LEGO® Mindstorms

Travis Chase | Mon, 6/18 at 2:00 pm | 50 minutes | Ballroom A

Join Travis as he explores the fun and challenges of controlling LEGO® Mindstorms using Perl. He will walk through his setup, talk about challenges and bring an example or two to share!

Audience: Everyone
Track: Fun with Perl

Gazing into the Camel’s Navel – a MOP without the Class

Stevan Little | Tue, 6/19 at 3:00 pm | 20 minutes | Ballroom A

In this talk we will discuss the MOP module, my proposed successor to Class::MOP. We will review the overall design of the MOP, compare it somewhat to Class::MOP and finally show some usage examples of the new MOP.

Audience: Advanced
Track: Development

Hackathon

Sun, 6/17 at 9:00 am | 480 minutes | Arizona

Audience: Everyone
Track: Hackathon

Hands on with RegEx

Kyle Waters | Tue, 6/19 at 9:00 am | 50 minutes | Idaho

We will use a Perl class and automated testing to demonstrate some common Regular Expressions and you can use them in parsing files.

Audience: Everyone
Track: Regex/DevOps

Having a Meta-Adventure: Metadata-driven testing of Advent

Steven Lembark | Wed, 6/20 at 11:10 am | 50 minutes | Ballroom B

The MadMongers decided to write Adventure in Perl as an exercise in parsing and data-driven code. Then they had to test it… Writing tests for all of the ghosties and tolls, weapons and toys would have left them all typing forever. Using metadata-driven testing and a sacred bottle of Perl we generated thousands of tests just by rubbing our magic keyboards! This talk describes the basics of metadata-driven testing, how Object::Exercise uses the data, and how to look at defining tests with data.

Audience: Everyone
Track: Development

How the Internet Works

Brad Lhotsky | Tue, 6/19 at 2:30 pm | 20 minutes | Ballroom C

Let’s go through how the internet works! One of my favorite interview questions to ask is “What happens when you type ‘www.google.com’ into your browser?” So I’d like to walk you through how it all comes together to render your kitten pics and Netflix streams. We’ll talk about DNS and HTTP (1.1-ish) and possibly go deeper into routing, TCP/IP, and TLS.

Audience: Everyone
Track: Beginner

How to join CPAN Pull Request Challenge

Kivanc Yazan | Tue, 6/19 at 3:00 pm | 20 minutes | Ballroom C

This beginner-friendly talk will briefly go over following questions: What is CPAN Pull Request Challenge? How do you setup your computer for the challenge? How do you submit your first pull request?

Audience: Everyone
Track: Beginner

Importance of Ecosystem

VM Brasseur | Mon, 6/18 at 11:00 am | 60 minutes | Grand Ballroom

Inspired by the decimation then return of wolves from the Yellowstone ecosystem.

FOSS projects and communities can benefit from recognising that they’re not simply one focal point. Each one is an ecosystem. Ignoring or killing off one part of that system has dramatic (usually negative) impacts on the rest of the system. Sometimes these impacts can lead to extinction.

This keynote may discuss:

  • The nature of ecosystems
  • Examples of healthy and unhealthy ecosystems, both natural and FOSS
  • Implications for P5
  • More importantly, implications for P6 as it’s just starting its (hopefully long and productive) life

Audience: Everyone

In depth testing with Test::Deep

Mark Horstmeier | Wed, 6/20 at 9:00 am | 50 minutes | Ballroom B

Test::Deep extends the Test::Builder framework by providing for more flexible testing methods and deep inspection of Perl data structures. Create re-usable test structures/objects that allow you to test records and complex data structures while focusing on as much (or as little) data as needed to satisfy your test requirements

Audience: Everyone
Track: Development

Introduction to Git for non-developers

John Jacobs Anderson | Mon, 6/18 at 4:10 pm | 50 minutes | Ballroom C

Git is a revision control system that is used for many Open Source projects. Having a basic understanding of Git is essential to being able to join an Open Source project and become a contributor. It’s also super useful for many other activities! This talk will explore the basics of Git, assuming no existing background experience. Via analogies to other, familiar technolgies, the basic principles of using Git will be explained in an approachable, understandable fashion. People who attend this talk should come away ready to make an initial contribution to an Open Source project, and will leave with a list of additional resources to explore to learn more.

Audience: Everyone
Track: Beginner

Learning XS by example

Nicolas Rochelemagne | Tue, 6/19 at 9:00 am | 50 minutes | Ballroom B

Where / how / why to start writing XS, using XS::Logger like as an example

Audience: Everyone
Track: Development

Lightning Talks

R Geoffrey Avery | Tue, 6/19 at 4:00 pm | 60 minutes | Grand Ballroom

Audience: Everyone

Lightning Talks

R Geoffrey Avery | Wed, 6/20 at 4:30 pm | 60 minutes | Grand Ballroom

Audience: Everyone

Linux initramfs for fun, and, uh…

David Hand | Wed, 6/20 at 10:10 am | 50 minutes | Ballroom A

The initial RAM filesystem (initramfs) is at the core of the Linux boot process. Learn how it works, how to peek inside your own initramfs, and how to make your own.

Audience: Intermediate
Track: Regex/DevOps

Local Speaker Keynote

Tue, 6/19 at 5:00 pm | 60 minutes | Grand Ballroom

TBD

Audience: Everyone

Make Your Technical Hiring Process Suck at Least 20% Less

Dave Rolsky | Mon, 6/18 at 2:00 pm | 50 minutes | Idaho

As someone who’s both done a lot of hiring and been through many interviews, I can tell you with great certainty that it’s almost uniformly terrible. I have some ideas on how you can make your hiring process less terrible, both for the candidates and for yourself. Some topics I’ll cover are how most processes suck, how to write a good job description, pre-interview screening approaches, how not to be a complete jerk when you interview someone, questions to ask (and questions to not ask), and more.

Audience: Everyone
Track: Community

Making Dates Easy(er) in Perl

Buddy Burden | Mon, 6/18 at 5:10 pm | 50 minutes | Ballroom B

We all know dates should be easy–not only in Perl, but everywhere–but somehow they aren’t. In this three-part talk, I’ll cover the following topics:

  1. What makes dates hard? This will involve some science, some history, and some ranting.
  2. What are some Perl solutions to the problems? In this case, “solutions” == “modules”: I’ll briefly discuss the most popular Perl date modules and what each are best at.
  3. How can Date::Easy solve some of those problems? My own entry into the dating game is Date::Easy; it isn’t a silver bullet (because nothing is), but there’s a class of problems it tackles really well. (Since the talk isn’t really meant as a commercial for my module, this will actually be the briefest part of the talk.)

At the end of the hour, you’ll have a better understanding of dates and times, as well as a new appreciation for those Perl modules that dare to tackle this thorny issue.

Audience: Intermediate
Track: Development

Making Sense of Regular Expressions

Deven Corzine | Tue, 6/19 at 10:10 am | 50 minutes | Idaho

Do you tend to avoid complex regular expressions — even if you’re a competent Perl programmer — because they appear to be indecipherable by mere mortals? I’ll try to make some sense of it all… or maybe just confuse you even further!

Audience: Everyone
Track: Regex/DevOps

Modernizing Legacy Perl Serving Millions Daily

Jeremy Zawodny | Mon, 6/18 at 3:00 pm | 50 minutes | Ballroom C

cgi-lib.pl, CGI.pm, mod_perl, and Mojolicious: all in the same codebase?!?! It’s not uncommon for developers in Perl shops to be dealing with older code, so how do you do it? This session will discuss strategies, ideas, and the pain (both technical and organizational) associated with dragging 15+ year old code into the Modern Age while also continuing to build new things–and do it with a famously small staff. This talk will consider factors beyond the code, such as the changing landscapes in infrastructure, testing, deployment, logging, APIs, monitoring, and more.

Audience: Everyone
Track: Beginner

Native & Inline & RPerl

Will 'the Chill' Braswell | Tue, 6/19 at 12:00 pm | 90 minutes | Idaho

Mixing Perl w/ Other Languages, Perl Compiler Technologies, Fast Native Execution!

Audience: Everyone
Track: BoF

Orchestrating For Your Architecture: Using Ansible and other devops tools to get things done

Gabriel Muñoz | Wed, 6/20 at 11:10 am | 50 minutes | Ballroom A

Server administration has a strong tradition with Perl programmers. Ansible is a tool for automating the orchestration of your infrastructure no matter how large or small. Combining it with your Perl skills is a way to empower your ability to go from code to deployment with confidence.

The goals are two-fold:

  • Introduction to Ansible as well as some other tools that I’ve found invaluable in getting things done with a Perl-based web application.
  • Real-world scenarios that show how Ansible stands apart when “orchestrating”, or changing up your software systems, whether they be enterprise servers or Raspberry Pis.

You’ll be shown some real-world best practices and examples of how to do some useful tasks. This will lead up to a series of scenarios that will help you engineer the security and performance of a distributed system.

Audience: Beginner
Track: Regex/DevOps

Origami Workshop

Jeffrey Goff | Wed, 6/20 at 7:00 pm | 180 minutes | Idaho

Learn and share Origami. You don’t need to know a single fold in order to get started, we’ll teach you what you need to know. I’ll supply ideas in the form of convention books, and paper to work with. This will be a more traditional Origami workshop

Audience: Everyone
Track: BoF

Perl 5.28 and Beyond

Sawyer X | Wed, 6/20 at 1:30 pm | 50 minutes | Grand Ballroom

What does Perl 5.28 bring us and what can we expect from new versions?

Audience: Everyone

Perl 6 and the Emergent Program.*

Bruce Gray | Tue, 6/19 at 9:00 am | 50 minutes | Ballroom A

Like vegetables snuck in to a meatloaf, Perl 6 makes tasty a few very advanced CompSci tools, via clever syntax that masks the complex and dangles the shiny.

Audience: Intermediate
Track: Perl 6

Perl 6 Hackathon

Thu, 6/21 at 9:00 am | 480 minutes | Arizona

Audience: Everyone
Track: Hackathon

Perl 6 Hackathon

Fri, 6/22 at 9:00 am | 480 minutes | Arizona

Audience: Everyone
Track: Hackathon

Perl and MongoDB: A Recipe for Success

Nate Handy | Wed, 6/20 at 10:10 am | 50 minutes | Ballroom C

Using Mongo in Perl (warning puns and Dad jokes abound):

Lettuce take some thyme to look into chow we could store recipes butter. If you carrot all about cooking, Nate will taco ‘bout what turniped, and olive the knowledge he gained, when going on a journey to store recipes in a document store vs a relational db. Oven if you don’t like cooking ewe could probably pick up a pizza knowledge here or there. Hoping to leave no scone unturned.

Audience: Everyone
Track: Community

Perl Optimization Tidbits

Daina Pettit | Tue, 6/19 at 11:10 am | 50 minutes | Ballroom C

“Have you ever wondered how much difference Perl coding styles make to performance? Perl has lots of ways to do the same thing, and some are more readable/maintainable, but are slower or consume more memory…or is it the other way around?

We’ll look at Perl syntax and see what performs better or worse and why. Maybe your favorite syntax is an awesome efficient race horse, maybe it’s a pig, or maybe it makes no difference. Come see your dreams shattered, hopes dashed, or realize how awesome your syntax choices really are!”

Audience: Everyone
Track: Beginner

Perl Quiz III

Daina Pettit | Wed, 6/20 at 9:00 am | 50 minutes | Ballroom C

Test your Perl knowledge, Round Three. Win prizes! Everyone will win something. We’ll do a fun Perl quiz as a group so you get to see how much you know. We’ll cover some arcane syntax as well as the latest Perl. This will be enlightening and lots of fun for everyone–beginners to experienced Perl gurus. Last year we handed out prizes such as board games, puzzles, toys, tools, videos, computer hardware, and other fun stuff. Who knows what great prizes will be awarded this year! Come participate, learn more about Perl, and win!

Audience: Everyone
Track: Community

Plenary

Larry Wall | Wed, 6/20 at 3:30 pm | 60 minutes | Grand Ballroom

TBD

Audience: Everyone

Promises and More in Perl 6

Will Coleda | Tue, 6/19 at 10:10 am | 50 minutes | Ballroom A

An introduction to the asynchronous and parallel programming support available in Perl 6. These tools are helpful whether you’re writing large applications or small scripts for system administration tasks.

We’ll cover the basic language components, how to combine them, and end with an exploration of the CPAN modules that build on these foundations.

Audience: Everyone
Track: Perl 6

Raspberry Pi + Arduino + Perl 6 = Fewer Interruptions

Sterling Hanenkamp | Mon, 6/18 at 4:10 pm | 50 minutes | Ballroom A

Ever wanted to get started doing some hardware hacking, but you only want to do projects involving Perl? Great news! I will demonstrate the On Air light I built for my home office to keep those pesky kids out while in meetings. Perl 6 plays an important role in this project.

Audience: Everyone
Track: Fun with Perl

Red Wunz Go Fasta

Graham TerMarsch | Tue, 6/19 at 1:30 pm | 50 minutes | Idaho

Parsing JSON is a staple for any application these days. Come share my experiences in trying to squeeze every last ounce of speed out of parsing JSON in Perl.

More than just “which JSON parser is faster?”, we’ll look at a handful of other open-source JSON libraries and build XS bindings for them, and discuss several tools/techniques that you can use for profiling/benchmarking XS code, and look at how much of a difference compiler options can make.

Audience: Intermediate
Track: Development

Reduce, Reuse, Recycle – Parsing in Perl 6

Jeffrey Goff | Tue, 6/19 at 11:10 am | 50 minutes | Ballroom A

Regular expressions are powerful beasts, but with that power comes a reputation for being hard-to-read. Perl 6, with its long pedigree in REs, bucks that trend. We’ll start by demonstrating some easy examples of regular expressions in Perl 6, and by the end of the talk build up easy-to-read examples that other modern regular expression engines can’t handle, including validating JSON files.

Audience: Everyone
Track: Perl 6

Regexp Mini-Tutorial: Grouping, Referencing, Capturing and Rules

Abigail | Tue, 6/19 at 11:10 am | 50 minutes | Idaho

In this mini tutorial we will look at the ins and outs of grouping, referencing and capturing in regular expressions. We will discuss named and unnamed groups and captures, numeric and named referencing, relative referencing, and we will show how one can use rules to not only write more powerful patterns, but also to make ones patterns more readable. We will also look at the various capture related special variables, including the new ones introduced in Perl 5.26.

Audience: Everyone
Track: Regex/DevOps

Relaunching Perl.com: the first 6 months

David Farrell | Tue, 6/19 at 3:00 pm | 20 minutes | Idaho

Find out the story behind how we rescued our community’s most venerable website, by collaborating with a new generation of Perl programmers.

Audience: Everyone
Track: Community

States of the Velociraptors

Lena Hand | Mon, 6/18 at 10:00 am | 40 minutes | Grand Ballroom

Audience: Everyone

Taking Perl to Eleven with Higher-Order Functions

David Golden | Mon, 6/18 at 3:00 pm | 50 minutes | Ballroom B

Sometimes, you just need your Perl to go one higher. This talk will teach you how to use functions that return functions for powerful, succinct solutions to some repetitive coding problems. Along the way, you’ll see concrete examples using higher-order Perl to generate declarative, structured “fake” data for testing.

Audience: Intermediate
Track: Development

Test2::Harness – Super charge your test runs

Chad Granum | Wed, 6/20 at 10:10 am | 50 minutes | Ballroom B

Test2::Harness, also known as yath, is a new test harness with features that make your test suite run faster, and easier to debug. This session will teach you how to use it, how to preload your code for a huge performance boost, and how to inspect the very rich data it collects to help figure out what happened when something fails.

Audience: Everyone
Track: Development

Testing the CPAN River Against the Perl 5 Core Distribution: Where Do We Stand?

James Keenan | Mon, 6/18 at 1:30 pm | 20 minutes | Ballroom B

As Perl 5 continues to evolve, how do we measure its impact on 30,000+ libraries on CPAN?

Audience: Everyone
Track: Development

TestML – DDT n P5/6 & ↗

Ingy döt Net | Tue, 6/19 at 11:10 am | 50 minutes | Ballroom B

TestML is an acmeist Data Driven Testing language. Define what you want with simple inputs and expected outputs, then write your software in any (or many) language(s) including Perl 5 & 6. TestML is the acmeist polishing of P5’s popular Test::Base. In the past year the language has grown up even more. Learn how to love writing tests, and in a format that you can take with you to any programming environment.

Audience: Everyone
Track: Development

The State of the CPAN Butterfly Plan

Elizabeth Mattijsen | Wed, 6/20 at 2:20 pm | 50 minutes | Grand Ballroom

In January I proposed the CPAN Butterfly Plan: a project to migrate as many (upstream) Perl 5 modules as possible to Perl 6. This to lower the threshold for other Perl 5 users to start using Perl 6, so that they can use modules that are familiar while trying to get to grips with the syntactic changes between Perl 5 and Perl 6. This presentation will be about how far we’ve gotten in the 5 months since, and how things are looking for the near and slightly further future.

Audience: Everyone

Tower of Babble – Extending and transforming perl

Matt Trout | Tue, 6/19 at 1:30 pm | 50 minutes | Ballroom A

From the dark, dark days of source filters and Switch.pm, to the differently dark days of Devel::Declare, to the creation of PPI and of the keyword API and more recently Damian’s work on Keyword::Declare and PPR, many ways and means have been found to extend and transform perl’s parser and syntax.

Audrey Tang once said “perl5 is just syntax – cpan is the language”.

These days, my version is “perl5 is just a VM – cpan is the language”.

So let’s take a wander through the things we’ve tried over the years, what worked, what made even me run screaming, and then onwards to the current state of play, where we’ll review the current options, the trade-offs involved in picking between them … and as is always necessary in one of my talks, end with bathing in the light of madness as we explore a new idea I’ve been experimenting with.

Hopefully it’ll be both educational and fun, and won’t cost you too many SAN points in the process.

Audience: Everyone
Track: Development

TPF Fundraising BoF

Dan Wright | Tue, 6/19 at 12:00 pm | 90 minutes | Wyoming

This will be a meeting for anybody interested in helping with TPF fundraising. We will be kicking off several initiatives we hope to complete in Fall/Winter 2018.

Audience: Everyone
Track: BoF

TPF Grant programs

Will Coleda | Tue, 6/19 at 2:30 pm | 20 minutes | Idaho

A brief overview of the various grant programs that are managed by the TPF, from the open Grants Committee process to the more directed sponsored programs. We’ll talk about how you can help with donations, apply for grants for your projects, and what what volunteer opportunities are available.

Audience: Everyone
Track: Community

TPF Welcome

Jim Brandt | Mon, 6/18 at 9:30 am | 30 minutes | Grand Ballroom

The Perl Foundation welcomes you to the 2018 Perl Conference.

Audience: Everyone

Training Your Inner Cowboy

Jan Samborski | Mon, 6/18 at 5:10 pm | 50 minutes | Ballroom C

Are you a solo developer?
Do you cringe when you have to have change code you wrote a year ago? a month ago? last week?
Have you thrown away working code which solved the right problem but for the wrong people at the wrong time?
Want to develop the right app for the right people in the shortest time?
This presentation will steer you in that direction
We have merged Modern::Perl and Agile methods to reliably make apps which can be built quickly and changeable for years to come.
This is a workflow, not just an application. You can pick and choose what you want or commit to the whole system and see how it works for you.
You have nothing to lose, nothing to buy, everything to gain and you are using the tools you know.
Lets get started today and deliver tomorrow!

Audience: Everyone
Track: Beginner

Turning Updates into an Infosec Weapon

Seth Johnson | Wed, 6/20 at 9:00 am | 50 minutes | Ballroom A

Keeping software packages up to date is an important security task. Out of date software continues to be a major risk to our systems and organizations (including a regular appearance on the OWASP Top Ten).

Why is this still a problem today? Updating software is hard. Updating software has risk.

How can we move beyond this problem? We will discuss a real-life example of using perl to solve this type of problem on a massive scale with consistency.

Audience: Everyone
Track: Regex/DevOps

UNIVERSAL::Object – All your base class are belong to us

Stevan Little | Mon, 6/18 at 1:30 pm | 20 minutes | Ballroom C

In this talk I will discuss UNIVERSAL::Object, a simple base class that provides a construction and destruction protocol for building instances. In this talk we will discuss how to use UNIVERSAL::Object to standardize your classes, as well as; how to customize your constructor API, how to create non-HASH based instances, how to deal with inheritance, and more.

Audience: Everyone
Track: Beginner

Welcome

Lena Hand | Mon, 6/18 at 9:00 am | 30 minutes | Grand Ballroom

Hello! Welcome to the party!

Audience: Everyone

Writing Effective Benchmarks

Steven Lembark | Tue, 6/19 at 3:00 pm | 20 minutes | Ballroom B

Avoiding Damn Lies & Statistics requires adding some extra steps to get baseline values. This talk shows examples of benchmarking some code using Perl5’s Benchmark utility with the intermediate steps required to get useful answers.

Audience: Everyone
Track: Development

Writing Testable Code

Scott Lee | Tue, 6/19 at 10:10 am | 50 minutes | Ballroom B

Writing tests is easy — as long as the code is designed to be testable. If your code is hard to test then this presentation will help you see a better way to write that code. More than a check list of dos and don’ts, we will focus on how to change the way you think about programming. The goal is to help you understand why and how tests help you write better code and do it faster. This will improve not only your tests, but your code and your documentation as well.

Audience: Everyone
Track: Development

You got chocolate in my peanut butter! .NET on Mac & Linux

John Jacobs Anderson | Tue, 6/19 at 1:30 pm | 50 minutes | Ballroom C

Microsoft has open sourced .NET and made it cross-platform on Mac and Linux, and done a surprisingly great job of it. In this talk I’ll walk you through creating a simple .NET app — LIVE — on a Mac, and I won’t use the mouse even once — that’s how good the CLI support is. It’s easy, and more importantly, it’s useful.

The .NET Core tooling has made a believer of me — come see for yourself just how good the new open source .NET Core is!

Audience: Everyone
Track: Beginner

You’re Not Wanted Here! (How design decisions can make your application discriminatory)

Joelle Maslak | Mon, 6/18 at 4:10 pm | 50 minutes | Idaho

How do you tell someone they aren’t wanted, in the new, interconnected world in which we live? Learn from successful examples of exclusion how you can build sites to keep disabled people, women, the LGBT community, people from nations you don’t care about, and others from having a positive experience with your application. With luck, those pesky outsiders will get the hint and go elsewhere, and your homogenous team can continue to only think about people like yourselves! This talk will be useful for anyone that may have design input into computer applications, regardless of experience level. While this talk will use Perl for some examples, most of the content will be understandable by people without any Perl background. (Note: This talk is intended to use irony and sarcasm to help people understand how to build applications that have the widest possible audience, so while it will present the topic as a way of excluding people, the intent is that you would do the opposite!)

Audience: Everyone
Track: Community