The Perl Conference 2017 in DC

US Patent and Trademark Office, June 18-23

(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
Amazon Alexa and Perl - Jason Terry
Dancing In The Cloud - Sam Batschelet
GraphQL and Perl 6 - Curt Tilmes
Higher-Order Perl - Mark Jason Dominus
Introduction to Moose - Dave Rolsky
MAKE new Friends - Chris Prather
MetaCPAN: The Grand Tour - Mickey Nasriachi
Modeling a Universe in Perl - Curtis "Ovid" Poe
MongoDB with Perl - David Golden
New Perl - Damian Conway
OAuth2 is Done - Lee Johnson
Perl One-Liners - Walt Mankowski
Perl Quiz II - Daina Pettit
Perl Second Best Practices - Randal L. Schwartz
Perl in a Day - John S Jacobs Anderson
Spilling the @INC - David Oswald
Testing with Test2 - Chad Granum
To Serve Human - Joe Kline

A Brief History of Timekeeping

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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 a symbiosis between Civic Hacking and Perl Evangelism

Standard Talk - 50 minutes, Any and All!

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 in encouraging new blood to join our ranks... to ensure there's demand for perl developers in our ecosystem. A small panel, well-represented by community members and USPTO staff, all participants in the local 'CodeForAmerica' chapter 'CodeForNoVA', will discuss the issue and invite conversation from the room.

A panel of four local Civic Hackers, some with perl experience, possibly with one guest.


A Vim Environment For Perl Developers

Standard Talk - 50 minutes, Any and All!

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 noise, please: Perl6 Regexen.

Standard Talk - 50 minutes, Intermediate

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.


Advanced Parsing Techniques for Perl

Half Day Tutorial, Intermediate

Mark Jason Dominus

Parsing is the task of analyzing unstructured inputs, such as character strings, and transforming them into structured data, such as databases or hierarchies. Nearly every program has to parse input. Perl provides some built-in operators for parsing, but they go only so far. And although CPAN contains several excellent parsing modules, most are fundamentally limited.

In this class, we will see how to build a parsing system that is unlimited in extent. The basic idea is to construct modular tools that can assemble simple parsers into more complex ones. When complex parsers are built from simple components, parsing code is powerful, flexible, and maintainable. Parsers are written directly in Perl, not in a separate language. Some tools are generic, and are useful in building nearly any parser, but we'll also see how to build special-purpose parser-constructing tools as we need them to solve parsing problems that are specific to an application. Topics will include:

  • Building lexers and emulating Perl's '' operator
  • Very simple parsers
  • Writing functions to combining simple parsers into more complex ones
  • Recursive descent
  • Case study: parsing regular expressions
  • Case study: parsing outlines and trees
  • Parsers that diagnose and recover from erroneous input
  • Backtracking
  • Operator overloading

This tutorial requires a separate $75 ticket.


Adventures in Failure: Error handling culture across languages

Standard Talk - 50 minutes, Any and All!

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

Short Talk - 20 minutes, Any and All!

Jason Terry

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

Senior Developer for Bluehost


Basic Autonomous Driving Research

Short Talk - 20 minutes, Any and All!

Philip Hood

I had been lately hearing a bit about, but never studied, robotics more generally, and autonomous driving in particular and wondered if I could create some smaller instance of this using commodity tools - something like an inexpensive remote controlled car - purchased off the shelf, by using sensors (a camera) on the device, and having input from the camera be used to navigate the device, in "real-time," so to speak. In this talk I discuss my experiences and detail a bit about the code, various algorithms investigated, and other things I tried along the way.

like the usual: just another perl hacker ...


BumpySkies: a passion-project postmortem

Short Talk - 20 minutes, Any and All!

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!

Standard Talk - 50 minutes, Any and All!

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

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Intermediate

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

Standard Talk - 50 minutes, Intermediate

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

Standard Talk - 50 minutes, Intermediate

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

Short Talk - 20 minutes, Any and All!

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.

Short Talk - 20 minutes, Any and All!

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?

Standard Talk - 50 minutes, Any and All!

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

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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.


Getting started with Docker and Modern Perl

Short Talk - 20 minutes, Any and All!

Jason Hall

Docker has made it's way into becoming a standard tool in a modern development cycle. Learn how to use it as part of your modern perl environment for new projects, or for better testing of your existing code.

Longtime perl developer, focusing on payments systems.


GraphQL and Perl 6

Standard Talk - 50 minutes, Intermediate

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

Short Talk - 20 minutes, Any and All!

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)


Higher-Order Perl

Half Day Tutorial, Intermediate

Mark Jason Dominus

It's well-known that Perl resembles languages used in the Unix sysadmin community, such as C, Bourne shell, awk, and sed. Perl programmers tend to come from that community, or to have been trained by people who did.

Perhaps you've heard the joke that a dedicated Fortran programmer can write Fortran programs in any language. But Perl programmers have been writing C programs in Perl for years without realizing it. This class will show you how to effectively use some of Perl's most powerful features to do organize your programs more powerfully and effectively.

I've raided the techniques of the Lisp and functional programming communities and come back with all the loot I can carry, techniques for increasing modularity and interoperability on large projects.

We'll take recursion to the next level and see how to build powerful recursive functions for managing hierarchical data. We'll see how callbacks, usually relegated to GUI programming, can be used to increase modularity in your library functions, so that they can be used in ways you didn't expect, by programmers years later, without anyone having to change or even look at your code. We'll look in detail at how to provide 'function factories' that manufacture, on demand, the library functions that the user needs. We'll see how objects based on anonymous functions can be used to get around some of the limitations of Perl's built in OOP system. We'll see how to make your own filehandle-like objects that generate data on demand.

This tutorial requires a separate $75 ticket.


Hold my beer and watch this!

Standard Talk - 50 minutes, Any and All!

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?

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Beginner

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

Standard Talk - 50 minutes, Any and All!

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.


Introduction to Moose

Full Day Tutorial, Intermediate

Dave Rolsky

This is an interactive hands-on course all about Moose, an OO system for Perl 5 that provides a simple declarative layer of “sugar” on top of a powerful, extensible meta-model.

With Moose, simple classes can be created without writing any subroutines, and complex classes can be simplified. Moose’s features include a powerful attribute declaration system, type constraints and coercions, method modifiers (“before”, “after”, and “around”), a role system (like mixins on steroids), and more. Moose also has a vibrant ecosystem of extensions as seen in the variety of MooseX:: modules on CPAN.

This course covers Moose’s core features, goes in depth on many of them, and explores some of the more powerful MooseX:: modules available on CPAN.

This is a hands-on course. Each lecture section is followed by a hands-on exercise section where you put what you’ve just learned into practice. The instructor will work with each student individually as needed to help you get the most from these exercises.

This class is aimed at Perl programmers who understand object-oriented programming and want to learn how to do it with Moose. It is not suitable for Perl beginners or for people without any OO experience. OO experience in other languages besides Perl is sufficient, as long as you also have a good grasp of Perl syntax, particularly method call syntax.

Students are expected to bring a laptop with a recent version of Perl and the editor of their choice. You will also be expected to clone the class’s git repository in order to obtain a copy of the class slides and exercises.

More information about the course is available here: http://www.houseabsolute.com/classes/

This tutorial requires a separate $150 ticket.

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


Introduction to Perl Internals

Short Talk - 20 minutes, Any and All!

Nicolas R.

Internals for du'me

perl lover & hacker


Kangiten PDF-Writer (PDF-Reuse + Reduce & Recycle) - a PDF Document Creator for Structured Content

Standard Talk - 50 minutes, Any and All!

Raja Renga Bashyam

Kangiten will produce PDF documents based on PDF-Resuse module. It will reduce inline manual format instructions by a structured HoH bulk input. Kangiten produces the document in a two stage way. Creation of structure first than filling the content. The two way method will help to reuse the structure in similar needs and recycle the structure to meet minor variation.

During implementation of a billing solution for Advertising Agency, we have requirements to produce PDF documents with six different structures and the document structure shared by 3 different legal entities with minor variations. It has the usual Estimate – Purchase Order -> Invoice with Detail, Rate, Qty and Amount with varied additional columns for Print Media and A/V works. Mainly we looked for a PDF library with:

  1. Ability to tailor build the document
  2. A module that gives production control in pixel level
  3. Flexible options to set page properties
  4. Option to implement images/signatures
  5. Position control to handle page continuation

After a lengthy search, we finally zeroed in PDF-Reuse module. It did not have user friendly function wraps for graphical output, but it offered a developer friendly core functions to control the graphical output in a pixel level. It helped to wrap our custom functions to handle in generic way.

Map to Reuse, Reduce & Recycle

One of PDF:: Reuse’s main advantage is that it can take an existing PDF - something that our designers can create with their standard PDF tools and then all we have to do is add the various content details to it. The feature of reusing the existing PDF and writing content over that, helped to reuse the existing legal entity letter pads in specific company document production. It's avoided manual graphic production work.

Instead of line by line manual instruction to write and format, we used a structured bulk input to create structure with format need and fill the content. The PDF::Reuse core function mapped to input data.

The document classified into three major parts:

  1. The page layout and page background
  2. Header
  3. Content

Each input will take the communication in HoH structure.

A simple structure to produce one line seems like:

# Data structure input for produce one liner output
# base structure
my $print_data = {
    0 => {
        left_xaxis  => 250,     # print start x position
        line_height => 25,
        # column definition
        header => {
            # define the first (and only) column
            0 => {
                font      => 'Helvetica-Bold',
                font_size => 12,
            },
        },
        # insert the data
        data => [['Production Estimate']],
    },
 };

The same structure can be reused to similar needs and adjusted to minor variations and duplicated to continuous need. Based on the structure it will produce single row & multiple row contents. It's continuously evolved to meet real time needs. Some of the features like header continuation to new pages, table header to new pages, auto compress the document size added incrementally.

Started from billing solution, now it helps in many of our PDF document productions needs. Now it's available in public.

https://github.com/WebstarsCG/Kangiten-PDF-Writer

In this talk, I will share the tools inner components, existing use cases and a short hands-on implementation on structured way of document generation to achieve Reuse Structure, Reduce Code & Development Time & Recycle the structures to meet variations.

A Perl Artist, Web App Developer & Web Designer from Indian Subcontinent. More than a decade of friendship with Perl to solve challenges of various kinds in computing. Working on a comprehensive reporting frame work and regular expression based action system in Perl.


Last mile software development: writing modern software for bench scientists

Standard Talk - 50 minutes, Any and All!

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.


Logging for Systems from Tiny to Big

Standard Talk - 50 minutes, Beginner

Doug Bell

This talk is about adding logging and reporting to your Perl project. Every program, from the smallest script to the largest distributed platform needs to tell you what's going on inside, even if only temporarily. I'll go through how to add logging and reporting to scripts to aid debugging and enable problem analysis. I'll explain how different logging can be used for different purposes, show how the Log::Any module makes it easy to add a basic logging system powerful enough for most common cases, and go through some different ways to transmit and store logs for later exploration and reporting (like Syslog and ElasticSearch).

I've built logging systems for tiny web apps and big data warehouse platforms. I've used every major Perl logging platform on CPAN, and am the current maintainer of Log::Any. Detailed logging is how I show operations teams I care.


Lost art of troubleshooting

Standard Talk - 50 minutes, Any and All!

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

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Intermediate

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

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Intermediate

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.


MongoDB with Perl

Full Day Tutorial, Intermediate

David Golden

MongoDB is the #1 database that developers want to learn this year, according to the 2017 Stack Overflow developer survey. This full-day workshop mixes lecture and hands-on exercises to teach you how to use MongoDB with Perl, led by the author of the MongoDB Perl driver. We'll cover when to use MongoDB (and when not to!) and you'll leave the workshop knowing CRUD operations, indexing, aggregation pipelines, effective schema design, and more. Strong-beginner or better Perl skills recommended.

This tutorial requires a separate $99 ticket. 100% of workshop fees will be donated to The Perl Conference, courtesy of MongoDB.

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.


New Perl

Full Day Tutorial, all

Damian Conway

Perl 5.10 added more useful features to the language than any other release since Perl 5.0.0. Perls 5.12 through 5.24 are more recent annual releases that provide important refinements and further enhancements. Perl 5.26 is the next scheduled release, due in mid-2017. Most people are now using Perl 5.10 or later, but often without taking advantage of those new features.

This one-day tutorial provides a detailed introduction to the new and improved features of these modern versions of Perl 5, along with practical examples of how they can improve the performance, robustness, and maintainability of your code.

Topics covered include:

Backward and forward compatibility using the feature pragma Smartmatching comparisons Perl's new switch statement Many new features and performance improvements for regular expression State variables Lexical subroutines Handling defaults with the defined-or operator New and improved file and filetest operations Recursive sorting and pattern matching The new UNITCHECK execution phase The extended package definition syntax Implicit strictures Using each on arrays Using array or hash references in place of arrays or hashes Much more reliable exception handling New and improved core modules and pragmas New documentation Deprecations and feature removals Where to expect better (or worse!) performance

This tutorial requires a separate $150 ticket.

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.


OAuth2 is Done

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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.


Parsing with Perl 6 Regexes and Grammars

Full Day Tutorial, Intermediate

Damian Conway

Parsing is the process of detecting and verifying the structure of incoming data and then processing that data so as to make it available to a program in convenient ways.

This full-day tutorial will introduce beginner and intermediate programmers to the powerful and efficient parsing mechanisms built into Perl 6, and will explore specific techniques for parsing data in a variety of commonly used real-world formats.

Topics covered include:

  • simple parsing with Perl 6 regexes

  • structured parsing with Perl 6 grammars

  • dealing with XML and other tagged formats

  • decoding heterogeneous structured formats

  • extracting data structures from structured data

  • coping with incomplete, malformed, and ambiguous data

  • integrating parsing and object oriented programming

Course format

1-day seminar

Who should attend

Programmers who are familiar with simple regular expressions (either from their editor or from a programming language). The techniques presented are not restricted to the particular applications mentioned, and will be useful to anyone who needs to process or transform structured text-based data of any kind.

This tutorial requires a separate $150 ticket.

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.


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

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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.


Perl Second Best Practices

Half Day Tutorial, beginner

Randal L. Schwartz

So, you don't have time to read Damian Conway's "Perl Best Practices" book, to understand his "256 guidelines on the art of coding to help you write better Perl code"? Hear Randal Schwartz provide the executive summary, including pointing out where Randal disagrees with Damian, and why. This high-speed overview will help you understand "code layout, naming conventions, choice of data and control structures, program decomposition, interface design and implementation, modularity, object orientation, error handling, testing, and debugging." But using shorter words.

This tutorial requires a separate $125 ticket.


Perl in a Day

Full Day Tutorial, Beginner

John S Jacobs Anderson

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.

This 1 day tutorial will introduce you to the features of the Perl language while walking you through writing a static site generator. We'll start simply by opening, reading, and writing files, but over the course of the day we'll cover processing directories full of files, selecting and using a templating system, supporting Markdown, implementing a simple weblog, and much more.

This tutorial is aimed at people who have some programming experience in another language. No Perl experience will be required or assumed.

This tutorial requires a separate $50 ticket.

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.


Playing with Music with Perl

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Intermediate

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

Standard Talk - 50 minutes, Intermediate

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.


Regexp Mini-Tutorial: Character Classes

Standard Talk - 50 minutes, Any and All!

Abigail

Character classes form their own mini-language inside the regular expressions (which are a mini-language inside Perl). In recent versions of Perl, an algebra was added to this language.

In this talk, we'll discuss character classes; we'll show how to use them; how to make them work for you. And in particular, we'll show how you can use existing classes to create new ones.

20+ year of Perl programming. 18 year YAPC::NA veteran. Perl release manager. CPAN author. Regexp master.


Scaling, Reliability, and Performance at ZipRecruiter

Standard Talk - 50 minutes, Intermediate

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

Standard Talk - 50 minutes, Intermediate

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

Standard Talk - 50 minutes, Any and All!

Lloyd Fournier

👻Spook in the Shell👻 (spit-sh or just spit) is a Perl-6-like language written in Perl 6 that compiles into shell (/bin/sh). Its purpose is to produce modular, testable and easily deployable configurations. It's meant to be accessible and more focused on personal projects than enterprise.

Other than showing the basics of the language, I'll be showing you how to use spit to:

  • Deploy a configuration to DigitalOcean via DigitalOcean's HTTP API
  • Build and specify a Docker image using spit code instead of a Dockerfile

https://github.com/spitsh/spitsh

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

Short Talk - 20 minutes, Any and All!

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.


Test::More to Test2: How to adapt.

Standard Talk - 50 minutes, Any and All!

Chad Granum

This talk will explain Test2 from the perspective of someone who has used Test::More. After this you should be comfortable converting existing Test::More tests into Test2 tests. You will also know why converting your tests is a good idea.

Maintainer of Test::More, Test2, Child.pm, and others.


Testing with Test2

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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

Standard Talk - 50 minutes, Any and All!

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

Short Talk - 20 minutes, Intermediate

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

Short Talk - 20 minutes, Any and All!

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

Short Talk - 20 minutes, Any and All!

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.


Unicode and Associated Punishments

Half Day Tutorial, Intermediate

Ricardo Signes

Encoding is the worst‼

At first it seems simple — you just add "_utf8" to some methods, and things work. Later, you realize that there's a "UTF8 flag" that governs whether things will work. Everything gets better! 😃

Except then people start telling you that you're an idiot, and that this flag isn't anything to do with Unicode. (They don't listen when you remind them about its name!)

Why is encoding so stupid? Why is perl so stupid? Why is everyone involved so stupid? Who might exist stupid enough to try to communicate the answers to these questions?

I'm here to help.

This tutorial requires a separate $100 ticket.


Variables, Scoping, and Namespaces

Standard Talk - 50 minutes, Beginner

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

Short Talk - 20 minutes, Any and All!

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.


Web stores with Dancer2::Plugin::Cart

Short Talk - 20 minutes, Beginner

Ruben Amortegui

Dancer2::Plugin::Cart is a lightweight and extensible plugin to create Web stores using Dancer2.

Do you want to use your core lib as base of your web store? Or are you planning to create a new web store using Perl? This talk is for you!

Come on and discover how Dancer2::Plugin::Cart can make the process really enjoyable adding DSL keywords, a cart structure, route definitions, views, forms validation, and extensibility. All of this out of the box.

Bachelor degree in Systems Engineering at Fundación Universitaria San Martín (Bogotá, Colombia), Master's Degree in E-commerce at Instituto Tecnológico y de Estudios Superiores de Monterrey ITESM Universidad Virtual (Monterrey, México). Ruben has been creating and providing software solutions for web and stand-alone applications for the last 15 years to companies in different sectors like Education, Telecommunications, Financial, Human Resources, and Manufacture. He has been using several programming languages and technologies for prototype and production environments like: Java, Javascript, Delphi, Php, Ruby, Meteor, and Perl. He has been the host of the Elixir Calgary Meetup since 2016. The last 3 years Ruben has been using Perl at SOLE (Calgary, AB), to upgrade the backend and to develop new features and solutions like web apps using Dancer2.


What is Modern Perl?

Standard Talk - 50 minutes, Beginner

Josh Lavin

What makes some Perl "modern" and other Perl not?

We'll look at how Modern Perl is defined by various folks, what mindsets and toolsets one uses to write "Modern Perl", and why we should care.

Still pleasantly surprised by Perl after 15 years.


What's new on CPAN - Annual Edition

Short Talk - 20 minutes, Any and All!

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

Short Talk - 20 minutes, Any and All!

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

Standard Talk - 50 minutes, Advanced

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

Standard Talk - 50 minutes, Any and All!

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.



Contact