The Perl Conference

2017 - Washington, DC

(YAPC::NA 2017)

Talks & Tutorials

Here are the full details of all of our confirmed talks (more awaiting confirmation)! We are working on putting these into tracks, and will post the schedule once we have a good draft.

A Date with Perl - Dave Rolsky
A Modest Introduction to Swift - John S Jacobs Anderson
A Panel on Civic Hacking and a Role Perl can Play - Joshua Turcotte (& Michelle Koeth)
Amazon Alexa and Perl - Jason Terry
Dancing In The Cloud - Sam Batschelet
GraphQL and Perl 6 - Curt Tilmes
MAKE new Friends - Chris Prather
MetaCPAN: The Grand Tour - Mickey Nasriachi
Modeling a Universe in Perl - Curtis "Ovid" Poe
OAuth2 is Done - Lee Johnson
Perl One-Liners - Walt Mankowski
Perl Quiz II - Daina Pettit
Spilling the @INC - David Oswald
Testing with Test2 - Chad Granum
To Serve Human - Joe Kline

A Brief History of Timekeeping

Kivanc Yazan

How did we come from sundials to universally coordinated time with sub-second accuracy? How a country decides on its time zone? What good daylight saving does? Why Greenwhich? What railroads has to do with time standardization? Are there any alternatives to 24-hr day? What time is it on Mars?

Recent grad, software engineer for a year.


A Date with Perl

Dave Rolsky

Dates and times are confusing and crazy. What nut invented Daylight Saving Time? Someone who'd never imagined a computer, that's who!

Dealing with dates and times might seem simple at first, but there's a lot of gotchas.

This talk will start by covering some concepts worth knowing about (What is an Olson timezone? What's the Gregorian Calendar?).

After that we'll talk about how the DateTime suite of modules can make your life a little easier. I'll show you some best practices for working with dates and times, and highlight some gotchas in DateTime's API, and with datetimes in general.

Dave Rolsky has been a Perl developer since 1999, and has created or contributed to dozens of CPAN modules, including DateTime, Log::Dispatch, Params::Validate, and more. He is also a member of the Moose core development team, and in early 2009 completed a TPF grant to substantially rewrite and expand the Moose documentation. Way back when, he co-wrote Embedding Perl in HTML with Mason and RT Essentials, both published by O'Reilly.

He spends a lot of his free time on animal advocacy, and otherwise vegetates with video games, books, and TV shows, like any proper nerd.


A Modest Introduction to Swift

John S Jacobs Anderson

Swift was originally released in 2014, and Open Sourced by Apple in late 2015. The Open Source release generated an explosion of community interest and support, resulting in ports to other platforms and significant language changes. Swift version 3, which reflects the results of much of this work, was released in September of 2016, bringing with it some significant refinements to the core language and a new package manager.

Swift is a multi-paradigm language, supporting imperative, functional, and object-oriented programming styles. The language is strongly typed but has extensive support for type inference and substantial tooling available in XCode to identify and in some cases automatically fix common programming errors. Swift uses a memory management strategy called automatic reference counting (ARC), freeing programmers from the tedium of manually managing memory allocation. This combination of strong typing, maximal type inference, automatic reference counting (ARC), and excellent tooling results in an experience that can be described as "the Macintosh of programming languages".

This talk will present some of the history of the development of Swift with emphasis on how the Open Source release of the language kick-started activity, review the basic syntax of Swift (with comparisons to similar languages that attendees may be more familiar with), and describe what tools are available to help learn the language, including XCode, the Swift REPL available from XCode, and the new Swift Playgrounds for iPad that debuted with Swift 3 and iOS10. After attending this talk, an attendee with no previous Swift experience will understand exactly why they should be excited about this relatively new programming language and be up to date on exactly what they need to do to dive into Swift coding for themselves.

John is the VP of Technology for Infinity Interactive, a virtual IT consultancy. When he's not maintaining Perl modules or tweaking his Emacs config, he likes to play around with new languages like Swift and write about himself in the third person.


A Panel on Civic Hacking and a Role Perl can Play

Joshua Turcotte (& Michelle Koeth)

This fairly meta talk discusses a bubbling practice of civic engagement, or 'civic hacking' to solve local problems that local government or local business neglect. It may also help solve a problem Perl has been facing, as a community, and that's encouraging new blood to join our ranks.

Rusty Perl Developer turned Director and Civic Hacker, plus a PTO employee who hosts civic hackinf events


A Vim Environment For Perl Developers

Damian Conway

My Vim config now totals over 75,000 lines of VimScript. That's utter madness, of course. But there is method in it.

About 1/3 of those lines are specifically aimed at helping me write, maintain, navigate, and test my Perl code. My Vim configuration now automatically loads file templates, highlights syntax errors in realtime, intelligently searches for documentation, autocompletes syntactic constructs with snippet-like placeholders, autoaligns key/value lists, wraps long lines much more readably, summarizes subroutines, tracks and explains variables, searches and helps navigate source files across multiple directories, finds and executes module test suites, colour-codes STDOUT and STDERR, and even autoselects the right version of Perl for each program.

In this talk I'll explain how my .vimrc does all this, and show you how to obtain and configure the various Vim plugins and Perl modules that make it possible.

Damian Conway is a 52-year-old Australian male, wanted in connection with various outrages and atrocities committed on CPAN over the past two decades, as well as numerous assaults on the sanity of Perl audiences across four continents.


A little less line nose, please: Perl6 Regexen.

Steven Lembark

Perl6 regex syntax is markedly different from anything previously perlish. The new syntax was re-authored to be more flexible, readable, and maintainable while still being terse enough to use. This talk will look at a few of the design descisions that went into the new syntax and walk through a set of hello-world regexen, transmuting Perl5 into Gold! Well, Perl6 at least...

Steve Lembark has been playing with Perl for a while.


Adventures in Failure: Error handling culture across languages

Andrew Grangaard

Modern programming languages have a wide spectrum of error handling methods and related cultural expectations.

I'll lead you on a brief tour of various error handling patterns and paradigms and their strengths and failings. As a polyglot dabbler, I've done just enough with each of these languages to have formed cranky opinions.

By the end, we'll have new patterns to apply to our perl code (be in perl5 or perl6).

Compare and contrast:

  • C inspired return values in C, perl5 and go
  • Java vs Python exceptions
  • Erlang: "let it crash" approach,
  • Rust: Failure vs Panic
  • monadic: Rust Option and Haskell Maybe.
  • pattern matching
  • whatever it is that perl6 does ;)

Perl-loving polyglot Engineer. I fix things. Former Electrical Engineer, now I write software. la.pm.org nerd-herder for a decade. I've used perl for forever (I remember grumpily updating perl4 code for perl5 semantics). After a 6 year python diversion I'm back writing perl at ZipRecruiter.


Amazon Alexa and Perl

Jason Terry

Start on the road down home automation using Perl, Philips Hue, Sony Bravia, Amazon Alexa, and more.

Senior Developer for Bluehost


BumpySkies: a passion-project postmortem

Jason McIntosh

Jason McIntosh spent much of 2016 creating BumpySkies (bumpyskies.com), a turbulence-forecasting tool for nervous air passengers (such as himself). In this talk, Jason explains why he spent a year writing a web application instead of writing a book, why making one dang webpage took a whole year (government agencies are involved), and the hopes and uncertainties that lie in the project's future (government agencies are involved).

Maybe he should have written a book after all. Well, whatever, he did this anyway, and he's going to talk about it. Come hear him talk about the rewards of asking people for stuff nicely, and the pitfalls of writing software that's only useful for doing a thing that you're normally too scared to do very much.

Look, he's already written two books and that's all behind him now, okay?

Freelance software engineer, game design consultant, and creator of various online organizations and oddities. Daily Perl user since 1998.


C, RPerl. C, RPerl, Run. Run, RPerl, Run!

Will 'the Chill' Braswell

See RPerl run! This presentation is chock-full of real-life, bona-fide, honest-to-goodness running RPerl examples, demos, and applications. You will see RPerl execute in both normal-speed interpreted mode as well as super-high-speed compiled mode. You will see the C(++) output code generated by RPerl. You will see the basic procedures for using RPerl. And MOST IMPORTANTLY you will revel in the glory and technical ecstasy that is fully-compiled Perl. 100% guaranteed to be more fun than Dick and Jane!

Creator of RPerl & Co-Creator of Perl 11. Scouter, Juggler, Mormon, Perl Monger, Serial Entrepreneur, Volunteer, Aspiring Astrophysicist, Community Organizer, Family Man.


Civic Hacking: TIF is millions of YOUR tax dollars

Jay Hannah

I wrote a thing: The Nebraska TIF Report: http://opennebraska.github.io/pri-tif/

Tax Increment Financing (TIF) is one of those dry, abstract governmental issues that has powerful effects on how we live. TIF was originally conceived to promote economic development in marginalized areas. But is YOUR tax money supporting projects like low-income housing, homeless shelters, and drug rehabilitation clinics? Or are YOUR tax dollars being spent on kickbacks to developers of high income apartments and condos?

I live in Nebraska. I'll show you how we took years of Excel spreadsheets and normalized the data into an SQLite database, and then generated a static website which we hope will help people decide whether or not they're happy with how their tax dollars are being spent.

Maybe you can shine a light on TIF where you live?

Midwest nerd with way too many hobbies.


Content Security Policies: Sort of like firewall rules for the web

Dylan Hardison

In this talk I'll describe how I managed to retrofit CSP onto a 19 year old application, the tools and tricks I used, and how you can do the same for existing perl applications.

I'm the team lead / owner of bugzilla.mozilla.org and also an assistant project lead for the bugzilla project.


Continuous Integration for CPAN

Graham Knop

Continuous integration helps you catch issues in your modules across a more diverse set of configurations than is easy to check manually. Travis-CI and AppVeyor are free CI solutions for open source projects that will allow automatic testing on Linux, macOS, and Windows. Extra tools exist for easy testing with more configurations than Travis-CI has built in support for.

Moo, toolchain, and deep ugly magic.


Dancing In The Cloud

Sam Batschelet

This talk will walk though using Perl with the distributed key store etcd. I will also share a few new modules that I have been working on (Etcd3 and Dancer2::Plugin:Etcd) providing Perl and Dancer developers with cloud based authentication, and configuration management/storage options for their apps.

Sam is a Linux system administrator and developer whose specialties include ecommerce, custom development platforms, Perl Dancer, DBIx::Class and cloud technologies. He is passionate about solving problems with open source solutions.


Data Workflows with Beam::Wire

Doug Bell

The biggest problem in a large data processing system is how to organize it: Where are the scripts? Where's the configuration? How can the scripts share code and configuration? How do we turn our ad-hoc data processing scripts into a cohesive data platform?

The Beam framework consists of tools for integrating systems, no matter what Perl libraries you're using. Beam::Wire provides a powerful configuration file for sharing information. Beam::Runner provides organization and discovery for data scripts. And Beam::Minion provides a scalable compute cluster using the Minion task engine. With these tools, you can build a flexible, maintainable data processing system, or start better organizing your existing data processing system.

Doug is the author of Beam::Wire, maintainer of CPAN Testers, and a zealous advocate for well-designed, object-oriented systems. Doug is using the Beam framework to improve and organize the CPAN Testers data processing system.


Dockerizing CPAN Testers: Running an isolated test site.

Steven Lembark

The CPAN testers network is an amazing outgrowth of Perl's "tesing culture". Authors get their modules tested on hundreds of O/S and Perl platform combinations. Setting up and managing a machine dedicated to testing can be difficult, however, even a virtual machine requires a lot of extra work to keep running. Docker (containers in general) provide an alternative: all it requires is the shared libraries for Perl and a way to import CPAN modules for tesing. The ability to manage resources and suspend/restart the containers also makes this nice for background work on larger systems.

This talk discusses the basics of setting up the CPAN testers code in a docker container and running the test cycle for in-house testing or as part of the general tester's network.

Steve Lembark has been playing with Perl for a while.


ES6: Almost an acceptable perl5?

Matt S Trout (mst)

If you haven't been paying attention to javascript (and I can entirely understand why you might prefer not to), things have changed quite amazingly over the last few years.

Ok, they got 'use strict' years ago - but now they've added 'let', which is basically 'my', anonymous function declaration syntax that won't give you RSI, a class keyword, and more.

Plus annotations now let you make all sorts of trouble, and the tooling to transpile to Olde JS is mostly comprehensible and no longer replaced by something completely different every two weeks.

So, clearly, the only sensible thing to do was to try and write ES6 in the same style I write perl5, and see how far I managed to get.

Come to this talk and you'll find out.

Matt S Trout was thrust into Perl at the tender age of seventeen by a backup accident. Two weeks later he realised that he was in love with the language and has been happily using it for systems automation, network, web and database development ever since.

He is co-maintainer of the Catalyst web framework (and co-author of The Definitive Guide to Catalyst), the creator of the DBIx::Class ORM, and a core team member for the Moose metaprotocol and object system, as well as contributing to assorted other CPAN projects.

Matt spends his days leading the technical team at Shadowcat Systems Limited, an open source consultancy specialising in Catalyst, Perl applications deployment and systems architecture. Shadowcat sponsors web, source repository and mailing list hosting for Catalyst, DBIx::Class and a large number of associated projects, and creates and releases open source code both internally and on behalf of its clients.


Extending Perl 6 Command Line Argument Parsing using Metaprogramming

Brian Duggan

Perl 6 has amazing built-in features for writing command-line utilities. But sometimes even those aren't enough. In this talk, we push it further to allow features such as subcommands, command-specific help and interleaved positional and named arguments. We use metaprogramming to look up dispatch tables for multi-candidates, scrutinize signatures, and query POD declarator blocks. We show how integration with command line argument parsing is a practical application of Perl 6's rich meta-object protocol.

Brian has been an open source software author for over 20 years. His interests include math, chess, linked data, and writing code in Perl 5 and 6.


Finding Meaning in Your Operational Data

Brad Lhotsky

Reflections and dives into some concepts and technologies for use with your operational data. What do I mean by operational data? Great question! We'll talk about that and how to use and what technologies you can use in this space to get great value. After the talk you should have a better understanding of what it means to run your application in an observable manner.

Brad Lhotsky programs Perl and throws large amounts of data into PostgreSQL databases and ElasticSearch indexes in search of meaning. He often ponders why security is seen as a roadblock to development and operations while trying ever so hard to automate himself out of a job. Brad has over 15 years of experience in operations and development and is currently automating security and operations at Craigslist with Perl.


GraphQL and Perl 6

Curt Tilmes

Introducing a new GraphQL implementation for Perl 6. GraphQL (graphql.org) was recently released by Facebook with an open source reference implementation in Javascript and a public specification, and has been widely ported since then. This Perl 6 implementation capitalizes on some features of Perl 6, including grammars, introspection, concurrency, traits, etc. that make Perl 6 ideal for GraphQL, and make Perl 6 GraphQL great for implementing a web API for your data, regardless of your existing database technology. This talk will introduce GraphQL briefly, and describe how to build a GraphQL schema and server in Perl 6.

NASA Computer Scientist building satellite data processing systems with Perl.


Higgs meets Perl: Implementing in Perl Data Language (PDL) the data fitting method used to detect the Higgs Boson

Carey Witkov

This short talk will demonstrate how chi-square data fitting, the data fitting method used to detect the Higgs Boson, can be implemented in Perl Data Language (PDL). Applications to general-purpose data fitting will be shown.

Physics preceptor (Harvard University)


Hold my beer and watch this!

Stevan Little

Perl has been described in many ways; a Shinto Shrine, executable line noise, a Swiss Army Chainsaw, the Duct Tape of the Internet, etc. But I think Perl is more like a old pop star, always reinventing itself to stay relevant, never truly leaving our consciousness, always just a melody away. In this talk we will discuss my vision for the next incarnation of both Perl, the language, and perl, the compiler.

Stevan Little is a programming language enthusiast and while he loves all languages, Perl has found a special place in his heart. Stevan is a CPAN contributor and was the original author of the Moose module. His current focus is on improving the Object Oriented features in the core of Perl.


How Do We Assess and Maintain the Health of the Perl 5 Codebase?

James E Keenan

The publicly visible part of the Perl 5 codebase consists of the Perl 5 core distribution and the totality of all the libraries on CPAN. We assess the health of the codebase via testing: smoke-testing of Perl 5 blead and CPANtesters testing of new CPAN releases on a wide variety of versions of Perl and of operating systems.

But what happens when the code is not so healthy or when we need to provide preventative care? How well are our tools suited for that purpose?

In this presentation we'll discuss the current state of Perl 5 smoke testing, testing of CPAN libraries and the mysterious land between them known as "Blead Breaks CPAN." We'll see some of the challenges which the Perl 5 Porters face in moving the core language forward without causing major problems for CPAN libraries and other users. And we'll introduce some ideas for improvements in the ways we maintain the health of the ecosystem.

New York City-based Perl programmer and community organizer. Author of more than a dozen CPAN libraries. Presenter at YAPC::NA, YAPC::EU, YAPC::CA, DC-Baltimore Perl Workshop, Pittsburgh Perl Workshop and local Perlmonger meetings in New York, Toronto, Philadelphia and New Orleans. Member of Perl 5 Porters.


How to Automate your Scrum Team

Mark Prather

Writing scripts to get rid of the worst parts of the Scrum Team, the programmers.

Scrum Master, Dilettante, Open Source Comedian, Trog about Town.


Intellectual property and open source licensing basics

William Morriss

This talk will cover the basics of intellectual property law as it relates to software development, focusing on how it works (or doesn't) to facilitate code reuse through open source licensing. This session will explain the differences between patents, copyrights, trademarks and trade secrets, and illustrate how those legal tools can be applied to a piece of software to achieve different business goals. It will also discuss common open source licenses, and explain the legal consequences those licenses have for software development and commercialization.

William is a member of the law firm of Frost Brown Todd LLC, practicing in the firm’s Cincinnati office. He has a degree in computer science and his practice focuses particularly on the law and computer software. Since joining the Firm, William has represented inventors seeking to obtain protection for software implemented inventions before the United States Patent and Trademark Office; has represented businesses and individuals in patent infringement litigation, both in defending against allegations of infringement, and in enforcing patents against accused infringers, and has assisted clients in business transactions which include software, both in negotiating and drafting contracts, and in performing due diligence review of agreements in the context of potential acquisitions, including the review for a $335 million acquisition. William has invented technology for open source license management (U.S. Pat. 8,589,306) and designed software that he uses in representing clients before the U.S. Patent Office. He also performs pro-bono legal services through Volunteer Lawyers for the Poor, is an expert chess player and a black belt in Aikido.


Last mile software development: writing modern software for bench scientists

Thomas Sibley

This talk will focus on the need for, process of, and impact of developing custom software and data systems for scientists. My aim is to give you a glimpse into the rewarding world of software in science by drawing from concrete examples in own my experience of building systems using Perl, Python, JavaScript, Elm, and many other languages. For over three years now I've been the staff programmer in a biology research lab at the University of Washington, and I'll share what I've learned along the way after making the jump from commercial software development.

Interested in learning more about software in science? This talk is for you!

Do startups excite you? A science research lab has more in common with a startup than you might think!

Enjoy learning new domain knowledge to get your job done? Biology is fascinating and amazing!

I’m a software developer in a University of Washington microbiology lab despite my Geology degree. I still like rocks though and not just in my Old Fashioned.


Lost art of troubleshooting

Leon Fayer

There are a lot of great things about the cloud, but the "destroy and rebuild" philosophy which is really good for building a continuous delivery pipeline, really sucks when applied to troubleshooting production problems. When your application goes haywire, the most valuable engineering skill is not the the ability to bring up a copy of your system or even the knowledge of a your technology stack (although it doesn't hurt). It is the skill of understanding and solving problems.

Finding the root cause of the issue and mitigating it with minimal disruption in production is a must-have skill for engineers responsible for managing and maintaining production systems. In this talk I will discuss the skills required to troubleshoot complex systems, traits that prevent engineers from being successful at troubleshooting and discuss some techniques and tips and trick for troubleshooting complex systems in production.

Leon's two decades of expertise were concentrated on architecting and operating complex, web-based systems to withstand crushing traffic (often unexpectedly). Over the years, he's had a somewhat unique opportunity to design and build systems that run some of the most visited websites in the world. While his core expertise is in Perl and application development in general, he works his way around the whole technology stack from system architecture to databases design and code optimization. He's considered a professional naysayer by peers and has the opinion that nothing really works until it works for at least a million people.


MAKE new Friends

Chris Prather

I spend a lot of time working from my car. It's a lot of fun but sometimes it can be very lonely. The Raspberry Pi 3 is an amazing piece of kit, and with the help of some friends you can do very interesting things with it. Like build yourself an personal digital assistant for your car.

Pretty Pretty Perl Princess Pony


ML with Perl 6 and TensorFlow

Jeffrey Goff

Learn how to use TensorFlow for Machine Learning in Perl 6. We'll start by talking about what Machine Learning is, and how it's being applied in the real world to create SkyN...er, to perform tasks on Big Data that previously required neural networks. Next we'll build a simple three-node TensorFlow network in native Perl 6 using the TensorFlow library. If time permits, we'll talk about implementation details with Inline::Python and NumPy.

Jeffrey Goff has spoken at conventions worldwide and is an active contributor to both Perl 5 and Perl 6. Jeff is a senior developer at Evozon Systems, a web design agency in Cluj, Romania, where he architects and builds custom web applications with Perl, HTML, and JavaScript. He is one of the original release managers for Parrot née Perl 6 and has written some core interface modules for Perl 6. At home, when he’s not creating Perl 6 libraries or speaking at conventions, Jeff does origami and travels. You can follow Jeff on Twitter and view his open source contributions on GitHub. He also blogs at The Perl Fisher.


Make Your Technical Hiring Process Suck at Least 20% Less

Dave Rolsky

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 question to not ask), and more.

Dave Rolsky has been a Perl developer since 1999, and has created or contributed to dozens of CPAN modules, including DateTime, Log::Dispatch, Params::Validate, and more. He is also a member of the Moose core development team, and in early 2009 completed a TPF grant to substantially rewrite and expand the Moose documentation. Way back when, he co-wrote Embedding Perl in HTML with Mason and RT Essentials, both published by O'Reilly.

He spends a lot of his free time on animal advocacy, and otherwise vegetates with video games, books, and TV shows, like any proper nerd.


MetaCPAN: The Grand Tour

Mickey Nasriachi

Come learn about the ins and outs of MetaCPAN. We'll take a fun tour around the website and the API to show how it works and what it provides. Warning - you will learn new things!

Perl hacker for fun and profit. Member of both MetaCPAN and Dancer2 core development teams.


Modeling a Universe in Perl

Curtis "Ovid" Poe

With Tau Station, we're building a sci-fi universe in a browser. However, in object oriented design, what does the "single responsibility principle" mean when your combat armor serves as armor, a weapon, and medkit?

And when many different behaviors have long chains of duplicated requirements (for example, do you have enough money to buy a medkit, or refuel your ship, or repair your blaster, or bribe a guard), how do you handle that in an efficient an easy to read manner?

And how do you avoid god objects when your character in the universe drives almost everything?

This talk explores some of the techniques we've developed for the Tau Station to easily model complex behaviors.

I'm Curtis "Ovid" Poe, the CTO of All Around the World, a consulting firm specializing in Perl. I sit on the board of directors of The Perl Foundation and have written or co-written two books on Perl. I've also written or hacked on many of the testing tools you use on a daily basis and am a prolific CPAN author.


OAuth2 is Done

Lee Johnson

A couple of years ago I started down the rabbit hole that is OAuth2 and managed to implement a plugin for Mojolicious. Since then I have abstracted out a lot of the internals and now have a module to support all four OAuth2 flows, which is de-coupled from any specific web framework.

This talk will cover those four OAuth2 flows, with examples of using the module and plugins to implement an OAuth2 authorization server in your framework of choice.

Strong coffee is advised as a prerequisite to attending this talk.

I would call myself a software developer as this has been my primary role for over a decade. I am the maintainer / author of several modules on CPAN and a sporadic attendee / speaker at various conferences.

I have been a contributing photographer to several print and online magazines in the past and am now working on a few long term photographic projects, including one about perl conferences.

Originally from the United Kingdom, i am currently living in Switzerland.


Pakket - An Unopinionated Meta-Packaging System

Sawyer X

Packaging is one of the more illusive problems in maintaining a large set-up at any company. This is the solution we came up with at Booking.com.

A person incapable of providing a simple, clear Bio.


Perl 5.26 and the Blue-Blue Shiny Ball of Eternal Transparency

Sawyer X

By the time you sit down for this talk, Perl 5.26 has already been released onto an unsuspecting human world. This talk should - hopefully - cover enough of what Perl 5.26 has to offer you.

A person incapable of providing a simple, clear Bio.


Perl One-Liners

Walt Mankowski

One-liners aren't just for gurus and obfuscated Perl contests. Anyone can learn a few simple command-line switches and become more productive. If you're new to Perl, you'll be amazed at how much you can accomplish in under 80 characters. Even if you already write the occasional one-liner in Perl, chances are you're not taking advantage of all the tricks and shortcuts you could be. You too can become a command-line ninja!

Walt works as a postdoc at Drexel University, where we use high-end computer gaming hardware, combined with techniques from information theory, machine learning, and computer vision, to assist biologists in processing and visualizing terabytes of 2D and 3D microscope images. In his spare time he helps organize the Philadelphia Perl Mongers and the Philadelphia Linux Users Group.


Perl Quiz II

Daina Pettit

Test your Perl knowledge, Round Two. 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. 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!

Perl user since 1994. Taught Perl and Linux classes since 2000. Have spoken at the last 3 Perl Conferences on Map/Grep/Sort, Perl Quiz, and Perl's Worst Best Practices. Currently working for Bluehost doing mostly backend Perl magic.


Playing with Music with Perl

Brian Gottreu

An overview of Perl modules useful for creating or processing audio and music specifically. Live demo included.

I've worked in higher education as a sysadmin for over a decade.


Rapi::Blog - All-new maximalist blogging powered by RapidApp

Henry Van Styn

For this year's talk I'll be demoing the brand new RapidApp-based blogging platform Rapi::Blog which has been under development for around 6 months so far (as of march). It will be debuting with its first public release on CPAN on the day of the talk! Folks, this is conference-driven development at its finest.

Previous years' RapidApp talks have also involved day-of, first-time releases of demo applications, but this year is different in that Rapi::Blog is first and foremost a real application and is designed for real-world use.

Another blog?!?? Yep. And, like the countless other devs that came before me - who broke-down and said "screw it, I'll just write my own blog" - I went down the rabbit hole because I wanted some set of features and functionality that I couldn't find in other platforms. Everyone has different priorities, but for me, the two main factors were:

  1. Truer abstraction and separation between the front-end "theme" and the backend
  2. Leveraging the features and flexibility of RapidApp

Rapi::Blog introduces a new "scaffold" pattern which consists of a file structure of template-driven, pure HTML/CSS documents that are able to represent the view and layout for a given site using a straightforward but comprehensive API of template directives. The intent is to reduce the translation effort needed to convert a static, font-end only html site (such as a bootstrap site/template) to be driven from dynamic, backend models. The blog pattern emerges from a content model (i.e. posts, comments, etc, standard blog features) and a scaffold of html templates, css and images which accesses it.

Since it's powered by RapidApp, the initialization of the storage model is all automatic and requires virtually nothing for a new site/instance (unless you want to customize the model, which you can). In this way, a Rapi::Blog installation is able to consist of nothing but a scaffold and a place to store data. It is then the scaffold that can be extended, customized and adapted to create all kinds layouts, designs and scenarios. That said, Rapi::Blog will also ship with a fully-working vanilla-design scaffold needed to function as a blog.

If you want to try another blog with maximalist features but minimalist effort, or, if you just want to see my/RapidApp's take on the blog question, this talk is for you. Just like previous RapidApp talks, this one will consist of all live-running, real-time demos (which you can run yourself), and should be a lot of fun.

Henry Van Styn is the owner of IntelliTree Solutions, a small Perl shop focusing on database-driven web applications which has been in business for over 16 years. Henry is the primary author of RapidApp as well as several other distributions on CPAN. Henry has been a regular speaker at YAPC for the past few years and has also written for different technology blogs and publications, including Linux Journal.


Real World Optimization

David Golden

This case study gives an inside look at optimization of the MongoDB Perl driver, including custom benchmarking tools, step-by-step changes and results that will surprise and amaze. If you ever needed to optimize some Perl and wondered how people go about it, this talk is for you.

David Golden wears many hats in the Perl community. In his day job, he works at MongoDB, where he maintains the MongoDB Perl and C++ drivers.


Scaling, Reliability, and Performance at ZipRecruiter

Frew Schmidt

ZipRecruiter gets tens of millions of views a day. This talk will detail what we have done to ensure that we can keep growing without going down while maintaining a snappy user experience.

Major topics of discussion include database technologies, monitoring, timeouts, caching, and more. All of this is regarding Perl, though very little of this information is limited to Perl applications.

A subset of the information presented can be seen at: * https://blog.afoolishmanifesto.com/posts/reap-slow-and-bloated-plack-workers/ * https://blog.afoolishmanifesto.com/posts/put-mysql-in-timeout/ * https://blog.afoolishmanifesto.com/posts/linux-clocks/

fREW Schmidt


Spilling the @INC

David Oswald

@INC is typically just a list of paths whence modules are loaded. But that's not ALL it is. To misquote Lord Acton: Power corrupts. Absolute power is fun. Once we embrace the power (or dismiss our better judgement), manipulating @INC can be fairly useful. Let's have some fun exploring the power of @INC while trying not to stain ourselves.

Organizer of Salt Lake City Perl Mongers, and co-organizer of the previous two YAPC::NA events. Past speaker at various Perl Mongers groups, OpenWest, SaintCON, and YAPC. I work at Endurance International Group / Bluehost in the Platform & Infrastructure group.


Spitting out shell with Perl 6

Lloyd Fournier

Spook in the Shell Script is (Spit-sh) is a Perl-6-like language written in Perl 6 that compiles into shell. Its purpose is to be produce testable, dependency-free configurations for UNIX systems. It's designed to be fun and accessible.

Australian Perl hacker. Creator of the Spook in the Shell compiler, written in Perl 6.


Test::HTTP::MockServer - Testing things that don't want to be tested

Daniel Ruoso

Sometimes, when writing a test, you don't have to opportunity to do dependency injection of the type of transport used in a specific API. Sometimes that code will unequivocally always use actual HTTP and the only control you have is over the host and port to which it will connect.

This talk covers a mechanism to work around that limitation and still write a readable, maintainable test.

Perl Developer for almost 20 years, have worked in several industries and several types of applications in Brazil, Portugal and the United States. Contributed to several Perl projects including the early Perl 6 development, Catalyst and DBIx::Class.


Testing with Test2

Chad Granum

Learn how to write tests with Test2. Learn effective practices, and helpful techniques. This talk is useful for beginners and experienced testers alike. After this talk you will be able to write new tests using pure Test2 based tools. You should come away from this talk excited about how Test2 can help make testing easier and more fun.

Maintainer of Test::More, Test2, Child.pm, etc.


The Variable Crimes We Commit Against JavaScript

Julka Grodel

Have you ever put a value into a JavaScript variable, and then been unable to use it where you needed it? Or created it and unintentionally overridden something you thought wouldn't be affected? JavaScript has an unusual way of handling where variables are available, we call this "where" a scope. In this talk, we'll go over how JavaScript variables 'bubble' up into higher scopes, how to restrict them to just where you want them, and how this affects variables in your functions.

Julka Grodel is a Senior Software Engineer at AddThis and has worked professionally in web development for over 10 years. She is passionate about writing easily maintainable and extendable code and is on a mission to make it simple to use AddThis' social tools on single page apps and within a dynamic DOM. Julka spends most of her time on open source projects integrating AddThis tools for various JavaScript frameworks & content management systems. When not working, she spends her time volunteering with the Junior League, in a pilates studio, or doting over her blind cat Batman and his BFF Robin.


The \X-Files: Characters for Humans

Nova Patch

A “character” can mean different things to different people, but the largest disparity is between applications and the humans who use them. Programmers aren’t to blame, as our programming languages, libraries, and databases provide little or no support for understanding user-perceived characters. Many systems disagree on the basic units of characters, some use code points, others use code units, and others still operate on individual bytes by default. This frequently leads to products with a poor experience in some users’ languages, especially written languages that use grapheme clusters, sequences of code points that compose a single user-perceived character. With the rise in global emoji usage and the rapid evolution of standard emoji sequences, this problem is increasingly experienced by users worldwide, regardless of their language.

This session will cover: • Extended grapheme clusters and emoji sequences • Programming with these user-perceived characters • Data input, parsing, analysis, formatting, and output • Setting product requirements for character support • Examples from Shutterstock’s platforms for content editing and collaboration

Nova Patch is a principal engineer on the UX Platform team at Shutterstock, specializing in internationalization, multilingual search, and building products that support the world’s languages, writing systems, and cultures. Speaking experience includes the Internationalization & Unicode Conference, Open Source Bridge, AWS Loft, and OSCON.


Thriving in Alien Ecosystems

Graham Ollis

Alien is a technique for implementing external non-Perl dependencies for CPAN, improving reliability and usability of the Perl ecosystem. I will show off some new tech in this arena including alienfile and Alien::Build demonstrate how they fit in and improve existing infrastructure like Alien::Base and MakeMaker.

Perl Nerd


Thrown in the Deep End: Learning to Swim with Perl

Liam McNerney

In 2012 I was freelancing as a PHP/MySQL developer and knew practically nothing about Perl. I took a PHP job with a company and, within two weeks, was writing Perl code for an enterprise application. This talk discusses my experience getting thrown in the deep end and learning to love Perl.

I'm an East Coast native currently living in the Great Plains. I became a developer about twelve years ago working on mainframe applications in COBOL; since then I've done stints as a freelance web designer, backend developer, and for several years taught computer science at a small university. I'm now a Perl developer acting as technical lead for an Enterprise application.


To Serve Human

Joe Kline

The code we write changes peoples lives, but we often don't think about our impact as IT professionals. The revolution in job automation is a current example of technological impact on society.

Examples of automation, including self-driving cars and other IT choices, will be discussed to illustrate the need to reflect on the consequences of our work.

Sysadmin at Purdue University and member of Purdue Perl Mongers and Hack Lafayette.


Variables, Scoping, and Namespaces

Joel Berger

Searching for a deeper understanding of variables, scoping, lexicals, packages, and the "my", "our", and "local" keywords.

Perl programmer and physicist


Vue.js, Mojolicious, and Postgres chat in less than 50 lines

Joel Berger

Demonstrating key features of these technologies, this talk will show how to build a front-end rendered, websocket delivered, broker-backed (prefork-safe) chat application in an easy-to-read 50 line file single-file application.

Perl programmer and physicist, Mojolicious core team member.


What's new on CPAN - Annual Edition

David Farrell

What's new on CPAN is a monthly perltricks.com article that presents a curated list of new distributions uploaded to CPAN. This talk will be a whirlwind review of the last 12 months of new CPAN uploads - the good stuff. Come on down and find out what exciting new code is available on CPAN for your programming pleasure!

David is the founder and editor of PerlTricks.com. An organizer of the New York Perl Meetup, he works as a programmer for ZipRecruiter.


Writing Useful Scientific Analysis Software

David Mertens

Most scientists write bad software. This software can sometimes be improved with programming best practices. However, programming best practices do not help with data analysis software, the code that transforms the raw experimental data into digestible results, tables, and figures. Often, the most important results are not immediately obvious, only emerging after a period of exploratory analysis. This highly dynamic process involves pruning and sharpening, abandoning and starting fresh, and returning to a previously abandoned approach. Multiple lines of analysis from one stage serve as the starting point of the next. Test suites are a premature optimization, yet bugs sneak in and are discovered only in later stages. Over the last few years I have developed a modulino-based approach for managing this unusual set of challenges and constraints. In this talk, I will show the many inefficient approaches scientists use, how conventional software practices don't help, and how Perl's quirks make it easy to solve this problem with just a little bit of creativity and discipline.

I am an Assistant Professor of Physics at Eckerd College in St. Petersburg, Florida. I have used Perl for scientific computing for a decade, prodding PDL and Prima in the process, and writing a number of scientifically-oriented distributions available on CPAN. I earned my Ph.D. in Physics from the University of Illinois at Urbana-Champaign.


Writing XS in Plain C

bulk88

Even if you learned C in a classroom at some point, Perl's "XS" API for writing perl subs in something purported to be C but is really a cat on a tablet with caps lock on. In this talk I will show how difficult it is to write subs in plain C. This talk will make XS seem like a cakewalk.

Bulk88 has been working with Perl for 14 years. He is a frequent contributor to Perl 5 Porters, with a particular interest in optimization and Win32 support. While he loves Perl, he's also happy being close to bare metal, including both ARM and x86 assembly programming.


Your Perl 5 brain, on Perl 6

Bruce Gray

In which I detail the Perl 6 elements that have most changed my Perl 5 coding, and share the Perl 5 techniques I have adopted.

I eat, sleep, live, and breathe Perl!

Consultant and Contract Programmer Frequent PerlMongers speaker Dedicated Shakespeare theater-goer Armchair Mathematician Author of Blue_Tiger, a tool for modernizing Perl.

36 years coding 22 years Perl 16 years Married 15 YAPCs 7 Hackathons 3 PerlWhirls Perl interests: Refactoring, Perl Idioms / Micropatterns, RosettaCode, and Perl 6.