Loading…
Tuesday, June 8
 

11:30 EDT

Opening
We'll give you a breakdown on how the conference will flow and how to make it a better experience for you!

Speakers
avatar for Todd Rinaldo

Todd Rinaldo

Perl Developer, cPanel
Todd works at cPanel L.L.C. as a Perl Developer and sometimes B::C / p5p hacker. He lives with his wife and son in Houston, TX. Todd is a CPAN maintainer.


Tuesday June 8, 2021 11:30 - 12:00 EDT
Zoom

12:00 EDT

perlimports or "Where did that symbol come from?"
Download slides: curl https://raw.githubusercontent.com/oalders/presentations/main/slides/6-perlimports/remark.html -o perlimports.html && open perlimports.html

---

Perl import statements (like "use POSIX;") allow you to import symbols into your package, but they also allow lots of other shenanigans to take place. We'll explore avoiding pitfalls when importing modules, implementing best practices when importing and how to automate this via App::perlimports.

This talk will be made up of several parts.

How imports work

This will include a discussion of Exporter, Sub::Exporter and Import::Into. It will probably include some examples of other unexpected behaviour that may take place when Foo->import is called.

We will discuss why knowing what every CPAN module exports is almost impossible, but we'll review some techniques which we can use to maximize the number of modules we can reliably inspect for exports. There will be a brief discussion on how Import::Into can be used to create your own pragmas, or even your own flavour of Moose.

Why imports can introduce a maintenance burden on new and even experienced Perl programmers

Unmanaged import statements allow many unused symbols to be imported into existing code. Bare import statements and even import tags make it hard to discover where functions and other symbols originate from. Managing existing import statements gives us a chance to make code more readable, clarify the origin of imported symbols, remove unused dependencies and even speed up code compilation.

There will be a brief discussion of existing Perl::Critic policies which try to address this. We will look at using dump-perl-exports as a tool to discover what a module really exports.

App::perlimports

Bare imports and import tags provide the code author with a convenience, but this can come at the cost of readability for everyone else. We will walk through using perlimports from the command line and see how it attempts to clean up import statements in a selection of a code, a file or even an entire codebase. We will discuss how to use similar techniques with a simple vim integration, so that imports can be cleaned up directly in the vim editor. If perlimports does not present itself as a workable solution for an audience member, the preceding discussion should provide some food for thought as to how technical debt on an existing code base can be reduced through wise use of import statements.

Speakers
avatar for Olaf Alders

Olaf Alders

Senior Software Engineer, MaxMind Inc
I am coder #1 on MetaCPAN. I help keep a bunch of Perl modules mostly up to date. In my spare time I occasionally pick up a guitar and stand behind a microphone. I am into running, cycling and open water swimming. My kids are teaching me how to skateboard.


Tuesday June 8, 2021 12:00 - 12:50 EDT
Zoom Room 1
  Track 1

12:00 EDT

Raku, the Big
The Swiss-Army Chainsaw of Perl is now the full carpentry shop of Raku.
Which new tools are the Shiniest? Sharpest? Most-likely-to-cut-you-est?
Should other languages be inspired, or warned by its evolution?
Come see how the power of the 100-year language moved it from Perl 6.0 to First-of-its-Name.

Multiple paradigms, chained data flows, Types, Sets, Lazy Lists, Async.
Lurking among the many additions are a few key bits, that take Raku from Wow to Whoa!
Those bits also trigger most of the divergence from old mindsets and Perl solutions.

All the new moving parts fit like clockwork! Success!
But more tools, working together in new ways, means more to teach. Far more than was planned for.

Also relevant to Perl 7, and any other languages planning a growth phase.

Speakers
avatar for Bruce Gray

Bruce Gray

Consultant, Gray & Associates
* 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.* 38 years coding, 24 years Perl, 19 years Married, 17 YAPC&TPC... Read More →


Tuesday June 8, 2021 12:00 - 12:50 EDT
Zoom Room 2
  Track 2

13:00 EDT

Exploring Text-Based Protocols
In modern tech we interact with many high-level applications but many people don't know or haven't explored the low-level protocols that these systems use for communication. Graphite, Memcached, Redis, IRC, HTTP and others use human readable communication ... if you only know where to look. Learning how these protocols work, and indeed how our software uses, interacts with, and even generates these low-level communications can help you better write better software and have a deeper understanding of how it works. In this talk I will introduce these and perhaps other protocols, show how to interact with them, and even build rudimentary clients for some.


https://jberger.github.io/TextBasedProtocols

Speakers
avatar for Joel Berger

Joel Berger

Senior Developer, Deft
Mojolicious Core Team


Tuesday June 8, 2021 13:00 - 13:50 EDT
Zoom Room 1
  Track 1

13:00 EDT

Discoverability and Composability: Writing an ECS for Fun and Profit
ECS is the architectural pattern that took game development by storm, but it still sees little use in other areas. What is it? How does it work? How can I use it? And why should I? In this talk, I'll try to answer these questions and dissect one simple but effective implementation in both Perl and Raku that is ready to use.

The first time I attempted to write and use an ECS, I read the same articles and blog posts that everyone does and completely missed the point. A year or so later, while giving this a fresh go, I figured out the part that was missing, and ended up writing an entity registry that is simple and fast (enough), and learning a ton about data structures and algorithms in the process.

Join me in this talk as I show what I tried first, why it was entirely the wrong thing to do, and why this current attempt is different. In the process, we'll learn about sparse sets, data locality, and I'll demonstrate some libraries you can use right now.

Link to slides: https://jjatria.gitlab.io/discoverability-composability

Speakers
avatar for José Joaquín Atria

José Joaquín Atria

Development Team Lead, CV-Library


Tuesday June 8, 2021 13:00 - 13:50 EDT
Zoom Room 2
  Track 2

14:00 EDT

Birds of a Feather (Community Get Togethers)
https://github.com/perlconference/tprc-2021-cloud/wiki#bofs

BOF stands for Birds of a Feather. These are informal get-togethers planned by attendees and can be on any topic, technical or not. Just add a new page and describe your BOF. Make sure to say when and where you're meeting!


Speakers
avatar for Todd Rinaldo

Todd Rinaldo

Perl Developer, cPanel
Todd works at cPanel L.L.C. as a Perl Developer and sometimes B::C / p5p hacker. He lives with his wife and son in Houston, TX. Todd is a CPAN maintainer.


Tuesday June 8, 2021 14:00 - 15:00 EDT
Zoom

15:00 EDT

Lightning Talks Day 1
Today's Talks, not neccessarly in order or the final list:

  • TPF Summer Activities - Makoto & jmac/Jason
  • Open Food Facts, the Wikipedia for food products, powered by Perl - Stéphane
  • Generating Rust with Perl (from C Struct Definitions)- autarch/Dave
  • Metacpan Theme - Lnation
  • Space - Chris
  • My big year of GitHub actions - tib
  • German Perl Workshop 2022 in Leipzig - corion/Max
  • Programming Lessons from Conlangs (Dothraki, Toki Pona, Esperanto, etc). - Daniel

Speakers
avatar for rGeoffrey Avery

rGeoffrey Avery

Programmer, Perceptyx


Tuesday June 8, 2021 15:00 - 16:00 EDT
Zoom

16:00 EDT

Local dev setup for a complex app using docker-compose
How to run a non-trivial app (API backends, DB, Cache, mail,  JS, https) on your local dev machine using docker-compose.

A normal app usually consists of much more components (or services) than just your backend. You'll need a database, maybe a cache, you want to send some mail, serve some JavaScript and run all of that behind https (yes, even on localhost). Add some microservices to the mix, and you end up having to configure and start a lot of things.

An easy(-ish) way to do this is via docker-compose.

In this talk I will show my current docker-compose best practices that enable me to have all of the above, for several different projects, without having to remember complex command line options.

While the backends are written in Perl, this talk will feature mostly YAML .. sorry :-)

https://domm.plix.at/talks/docker_compose_for_complex_app.html

Speakers
avatar for Thomas Klausner

Thomas Klausner

mostly upright, sometimes on a bicycle, plix
Just in case you like to know, I'm currently spending my time as a father of 2 grown-up sons, Perl hacker who is not afraid to touch other tech, sort-of DJ, bicyclist, cook & taker-of-pictures - while being 40+ years old but too lazy to update my profile once a year.


Tuesday June 8, 2021 16:00 - 16:20 EDT
Zoom Room 1
  Track 1

16:00 EDT

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

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

Speakers
avatar for Dave Rolsky

Dave Rolsky

Senior Software Engineer, MongoDB
Dave Rolsky begin his development career with Perl in 1999, and has created or contributed to dozens of Perl CPAN modules, including DateTime, Log::Dispatch, Moose, and more. More recently, he has also developed in Rust and Go.Way back when, he co-wrote Embedding Perl in HTML with... Read More →


Tuesday June 8, 2021 16:00 - 16:20 EDT
Zoom Room 2
  Track 2

16:30 EDT

Refactoring your EXPORTS: Rescuing a client from global-variale-hell.
At first @EXPORT seemed natural, at least to  C programmers: Everyone sees everything, uses what they need. Fast forward a few decades, with a GlobalVariableModule that can't be modified because nobody knows what is really used. This is the story of what to do next.

What's next is a sequence of converting it all from @EXPORT to @EXPORT_OK and refactoring the contents into saner modules with external configurations using objects. One stage is appreciating the patterns and structure of 600 variables defined in terms of one another, another is extracting that into YAML structs [with comments], another is re-exporting it all via that most beautiful and under-appreciated of Perly tools: Symbol. The final conversion replaces @EXPORT with @EXPORT_OK so that we know what is actually being exported... which is probably a reasonable chunk of code for 40 minutes. Converting @EXPORT_OK imports to configuration-object calls isn't all that complicated. Part of the technique involves global unit testing (see my other talk) that allows tracking down what's missing when @EXPORT becomes just OK.

This matters because too many places are stuck on v5.8 because they don't actually know how to validate their code moving forward; they no longer know what it does. What this one case shows is how to get over the hump and start moving forward on a route to more modern, validated, documented code.

Speakers
avatar for Steven Lembark

Steven Lembark

Yo!, Workhorse Computing
I've been working with Perl since the 1990's, using it for everything but salads -- texture isn't quite right. Most of my work with Perl has been with web back ends, financial data, bioinformatics, sysadmin/DBA utilities, ETL, automation, and occasionally flying a quad-copter.


Tuesday June 8, 2021 16:30 - 17:20 EDT
Zoom Room 1

16:30 EDT

Raku syntax I miss in other languages
I will walk you through some of my favorite unique or unusual features Raku features that help in making your code easier to read and write

This includes (but isn't limited to): junctions, named arguments, pointy blocks, smartmatch (really, hear me out) and a few more…

Speakers
avatar for Leon Timmermans

Leon Timmermans

Yet Another Perl Hacker


Tuesday June 8, 2021 16:30 - 17:20 EDT
Zoom Room 2
  Track 2

17:30 EDT

Introduction to Perl Data Types
Data types are hints to a computer language, telling the language's interpreter or compiler how best to allocate resources and optimize performance.

We will introduce the type system provided by the Perl compiler, and the many benefits of utilizing Perl data types.

The Perl interpreter itself is written in C, and implements data types for its own internal use, including:

- IV, integer value
- NV, number value
- PV, pointer value AKA string
- AV, array value
- HV, hash value
- SV, scalar value
- RV, reference value

The Perl interpreter does not provide programmers with access to these pre-defined types, and instead it encourages us not to use data types at all.

Perl does allow programmers to create user-defined data types, but none of the (numerous & incompatible) data type systems actually utilizes the underlying C data types implemented in the Perl interpreter.

The Perl compiler finally provides developers with direct access to real C data types and their C++ equivalents.

Upgrade your Perl, start utilizing data types today!

Speakers
avatar for William N. Braswell Jr.

William N. Braswell Jr.

President & CEO, Auto-Parallel Technologies, Inc. & ChatGPU.ai
Creator of RPerl & CloudForFree & Perl Town Hall, Co-Creator of the Perl Community Roadmap.Scouter, Juggler, Mormon, Perl Monger, Serial Entrepreneur, Volunteer, Aspiring Astrophysicist, Community Organizer, Family Man.


Tuesday June 8, 2021 17:30 - 18:20 EDT
Zoom Room 1
  Track 1

17:30 EDT

Making Life Better with Software
Software improves my life. I'll talk about how I designed software for my own needs and how this can be generalized to designing software for users who have needs outside the mainstream. I'll talk about how I designed software to meet my needs in this talk, showing the iterative process I used.

Imagine writing software that helps people participate in the world! How do you avoid building systems for people as you think they are, rather than people as they actually are? I'll examine assistive and accessible technology I use, and how the software (most of which was created by myself) was designed. Throughout the presentation, while some Raku will be demonstrated, the presentation will be accessible to people who code in any language, with a focus on the process used to define requirements and design the various tools I use. Throughout, I'll also examine mistakes commonly made by technologists when designing accessible or assistive technology, and how you can avoid those mistakes in your own work.

Speakers
avatar for Joelle Maslak

Joelle Maslak

Network Engineer, Netflix
I have worked professionally in the network space over a quarter century and am also a CPAN contributor, in both Perl and Raku. I currently work as a Senior Network Engineer. During my career, I've worked for a top-tier CDN, state government, and numerous enterprises as a network... Read More →


Tuesday June 8, 2021 17:30 - 18:20 EDT
Zoom Room 2
 
Wednesday, June 9
 

11:00 EDT

Elasticsearch Data Exploration in Your Terminal
You've seen the pretty graphs. Visuals are great for signaling there is a problem somewhere. How do you go from pretty graphs to root cause analysis? Let's talk more about integrating Elasticsearch-based dashboards back to the command line workflows I love.

This talk is an overview of a tool I developed while working at Booking.com to drastically reduce the time and complexity of performing incident response against rich, structured data in Elasticsearch. It was developed with the help of the security and fraud teams to perform ad-hoc queries critical for incident response. The tool served the team well and it's been under active development ever since. It continues to grow in capabilities aimed to make ad-hoc analysis simple, easy, and accessible to hardened command line jockeys and command line newbies.

Join me to learn how to bring the logging data you love back to your terminal!

Speakers
avatar for Brad Lhotsky

Brad Lhotsky

Systems Security, craigslist


Wednesday June 9, 2021 11:00 - 11:50 EDT
Zoom Room 1

11:00 EDT

The Irregularity of Regular Expressions
Walk-in with zero regex knowledge, walk out with solid Regexp knowledge and a global lay of the land.

Regular Expressions are not nearly as standard as they may seem.  In this talk, we’ll provide an overview of regular expressions, their history, use cases, and alternative techniques.  Then, we’ll walk through the tools in the regexp toolbox (chars, wildcards, character classes, assertions, etc) with examples in PCRE, Perl, and Raku syntax.  Finally we’ll summarize and analyze the variations in regular expression syntax and provide some closing thoughts on regex and regex portability.

Speakers
avatar for Jordan Adler

Jordan Adler

Engineering Manager, OneSignal
Jordan M Adler is the Engineering Manager, Developer Engineering at OneSignal.  Previously, Jordan evolved Engineering Productivity at Cruise, lead API Platform engineering at Pinterest, and was a Strategic Partner Engineer and Developer Advocate at Google, where he managed technical... Read More →


Wednesday June 9, 2021 11:00 - 11:50 EDT
Zoom Room 2
  Track 2

12:00 EDT

Sequential Consistency & Perl & perl
This talk will discuss the idea of sequential consistency and why it's important for concurrent Perl semantics in the uniprocess runtime environment of perl. The talk will necessarily include the topics of Regular Languages, Finite Automata, and concurrent programming, and memory consistency models.

Much wasted effort has been expended for the cause of providing parallel and concurrent semantics in Perl,  the language. Because the perl runtime is unforgivably uniprocess, any effort must begin by ensuring a property of sequential consistency, which may described such that,

"... the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program." [1,2]

An inherently sequential memory model as the one provided for in a uniprocess runtime environment provides a lot of benefits. One of these benefits is that it provides strong memory consistency guarantees. In addition to that, the perl runtime environment provides a treasure trove of features that make it ideal for the support of implicit shared memory semantics with strong consistent memory guarantees. What's the missing link? A way to convert arbitrarily complex, concurrent semantics (or intentions by the programmer) into a valid sequential execution plan suitable for a uniprocess perl runtime environment.

This talk introduces that idea of sequential consistency, the uniprocess perl runtime model, and a CPAN module that demonstrates the feasibility of this approach, Sub::Genius.

References:

1. Leslie Lamport, "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs", IEEE Trans. Comput. C-28,9 (Sept. 1979), 690-691.

2. https://en.wikipedia.org/wiki/Sequential_consistency

Speakers
avatar for B. Estrade

B. Estrade

Perl Programmer


Wednesday June 9, 2021 12:00 - 12:50 EDT
Zoom Room 1
  Track 1

12:00 EDT

Well Formed Catalyst
Over the past decade+ I've consulted on nearly a score of Perl Catalyst based applications while building dozens more in my spare time and these are the facts of life I've found which lead to a maintainable and scalable code base.

In its nearly 20 years of existence many companies have built web applications and APIs on top of the Perl Catalyst web framework.   A Perl programmer working in the field or seeking a position has a not unreasonable chance of coming across Catalyst on the job.   For "greenfield" projects many people may consider Catalyst due to its reputation for long term stability and commitment to backward compatibility.   For a Perl programmer in either bucket it would be ideal to have a set of design patterns aimed at solving some of the most common programming tasks and issues one encounters when using this venerable framework.  I've been using and maintaining Catalyst for nearly 20 years, I've seen some great ideas and some astounding blunders.   The goal of this talk is to distill what I've learned into a comprehensive approach to building "Well Formed Catalyst" web applications.   A Well Formed Catalyst application uses simple, repeatable design patterns which enhance developer speed while promoting long term code comprehension and maintainability.  The goal of Well Formed Catalyst is to build applications and APIs that stand the test of time.


Wednesday June 9, 2021 12:00 - 12:50 EDT
Zoom Room 2

13:00 EDT

What's new in Perl?
It’s 2021! Another year, another Perl release. What’s new?

This year’s release is not bursting with new features, but we’ll tell you what they are and why they’re great. More than that, though, we’ll talk about what’s going on in Perl development, and what to expect from the coming year.


Speakers
avatar for Ricardo Signes

Ricardo Signes

CTO, Fastmail


Wednesday June 9, 2021 13:00 - 13:50 EDT
Zoom Room 1
  Track 1

14:00 EDT

Birds of a Feather (Community Get Togethers)
https://github.com/perlconference/tprc-2021-cloud/wiki#bofs

BOF stands for Birds of a Feather. These are informal get-togethers planned by attendees and can be on any topic, technical or not. Just add a new page and describe your BOF. Make sure to say when and where you're meeting!


Speakers
avatar for Todd Rinaldo

Todd Rinaldo

Perl Developer, cPanel
Todd works at cPanel L.L.C. as a Perl Developer and sometimes B::C / p5p hacker. He lives with his wife and son in Houston, TX. Todd is a CPAN maintainer.


Wednesday June 9, 2021 14:00 - 15:00 EDT
Zoom

15:00 EDT

Life after Perl (and Raku)
Worried about finding your next Perl job in a shrinking market? This talk explores what’s awesome (and what sucks) about popular other stacks and how to future-proof your career.

Perl isn’t dead, and Perl isn’t dying, but the number of pure Perl dev jobs is continuing to shrink.

This talk looks at the technical features of several popular technical stacks (spoiler: testing and documentation suck, and there’s no Moose, but async is pretty cool) as well as market outlook for each.

It also talks about future-proofing your career - strategies for helping you to leverage your outstanding Perl skills in the context of a shrinking number of pure Perl jobs.

Speakers
avatar for Peter Sergeant

Peter Sergeant

Director, Perl Careers


Wednesday June 9, 2021 15:00 - 15:20 EDT
Zoom Room 1
  Track 1

15:00 EDT

What should I do to run a Plack application on a server?
The talk will show step by step how I was able to run a simple Plack application on a Virtual Private Server, including the firewall configuration, module installation and using Let'sEncrypt to enable HTTPS.

You don't want to have a server at home running all the time. Or your ISP doesn't guarantee a static IP address. Or you can't run a compiler in your hosted solution to install the needed XS module.

Rent a virtual server. Configure it yourself and install what you need. I'll show you how I was able to run a simple Plack application on a VPS for €53/year, including the firewall configuration, module installation and using Let'sEncrypt to enable HTTPS.

Speakers
avatar for E. Choroba

E. Choroba

Senior SW Developer, GoodData
Perl enthusiast from Prague. Using Perl for both work and personal projects.


Wednesday June 9, 2021 15:00 - 15:20 EDT
Zoom Room 2
  Track 2

15:30 EDT

A tour of Perl's new documentation style guide
The next release of Perl will include a new style guide for its core documentation. In this talk, the guide's principal author discusses the motivations for this new "perldocstyle" man page, walks through its content, and outlines its role in Perl's future.

The next release of Perl will include a new man page named "perldocstyle": a style guide for the language's core documentation. Inspired by a call to action made by Sawyer X at 2019's TPC, the guide promotes documentation that centers approachability for new Perl programmers, while retaining the work's unique voice and its value as a history-steeped reference.

In this talk, the style guide's principal author, Jason McIntosh, discusses the history of the guide's creation, including the motivation that sparked it and the many contemporary projects and practices that helped inform it. Jason will walk the audience through the guide, exploring its content section-by-section: its fundamental concepts, its advice on formatting and structure, and its recommendations for tone, content, and overall organization.

Jason will also describe the guide's role as a founding document for Perl's new documentation team, and how it helps lay the groundwork for that team's initial projects and goals at the start of the Perl 7 era.

Speakers
avatar for Jason McIntosh

Jason McIntosh

Technical writer and software toolsmith. Programming in Perl since 1998.


Wednesday June 9, 2021 15:30 - 15:50 EDT
Zoom Room 1

15:30 EDT

Answering questions about CPAN that nobody asked
Some possibly useless experiments about package managers, versioning and dependencies, but some entertaining ones!


Wednesday June 9, 2021 15:30 - 15:50 EDT
Zoom Room 2

16:00 EDT

PipPresents: Octology in 2021: BlackJack Year for WhiteHat/SysAdmins, 20-minutes, 20-colors (c8), and 1-reset (zero $z)
Standard ANSI Escape codes have been around a long time for representing colors (as well as several other lesser attributes). Their definition has remained obtuse (obscene even?) for far too long. Let's change that. Learn d8-bow (ROYGCBMP) with blacK && White ends. Zero to reset && 21 is good-to-go!

Pip's Octology (on GitHub) shows how to export Bash and Zsh environment variables, which mainly emphasize 21 escape values which gr8ly simplify command-line coloriz8ion. The a8.pm Perl-Module does something very similar for any Perl code which uses it. The result is a minimalist approach to mnemonic and growing comprehension of how to colorize almost any text (almost anywhere in a terminal) quickly, easily, uniformly, and memorably. Please learn these 21 and go cast your Perls-B4-Hogs-Wild coloring whatever you find. Learn from `S` and `c` which gener8 much more than just 20 basic Fore-ground color codes. `tsgr` will add Select-Graphic-Rendition capabilities to your Perl tool-chest. Follow Pip and Octology if you want to bask in gr8r living color ahead, please.

Speakers

Wednesday June 9, 2021 16:00 - 16:20 EDT
Zoom Room 1
  Track 1

16:00 EDT

What To Say When They Tell You Perl Sucks!! (Debunking Perl myths)
This talk will be based upon the article I had published on LinkedIn where I had debunked Perl myths with facts. Yes, I will be preaching to choir here, but, I want to take this opportunity as a way to thank the Perl Community  and core Perl developers for all their fantastic work.

As someone who frequently dabbles with Perl (albeit intermittently), I was totally aghast by the articles and videos on the internet picturing Perl to be
1) A horrendous language designed to make the life of it's users miserable.
2) A "better alternative to shell scripting"
3) A dying language that no one should touch with a barge pole.
4) A weird mix of the 3 options given above.

In my personal experience, none of the above are true. Perl is a fantastic general purpose language, is far far more powerful than bash/zsh/ etc and is certainly NOT a dying language.

This is my attempt, as a generic Perl User to debunk these myths.
 

Speakers

Wednesday June 9, 2021 16:00 - 16:20 EDT
Zoom Room 2
  Track 2

16:30 EDT

The Perl Foundation update and Q&A
An opportunity to ask questions and hear the latest news. Find out what has been happening in TPF over the last year, and what current and future plans are.


Speakers
avatar for Dave Rolsky

Dave Rolsky

Senior Software Engineer, MongoDB
Dave Rolsky begin his development career with Perl in 1999, and has created or contributed to dozens of Perl CPAN modules, including DateTime, Log::Dispatch, Moose, and more. More recently, he has also developed in Rust and Go.Way back when, he co-wrote Embedding Perl in HTML with... Read More →
avatar for Ricardo Signes

Ricardo Signes

CTO, Fastmail
avatar for Stuart Mackintosh

Stuart Mackintosh

President, The Perl Foundation


Wednesday June 9, 2021 16:30 - 17:20 EDT
Zoom Room 2
  Track 2

17:30 EDT

Lightning Talks Day 2
Today's schedule, probably in order

  • German Perl Workshop 2022 in Leipzig - Max Maischein
  • Unite the Ethereum test Networks - Konstantin Narkhov
  • Asynchronously Parallelish Testing In Raku With Test::Async - Vadim Belman 
  • Perl and Multithreading via OpenMP - B. Estrade
  • Blogging Outside the Bubble: How to raise your profile and promote Perl - Mark Gardner
  • Mistakes Not To Make In Talk Slides - Paul “LeoNerd” Evans

Speakers
avatar for rGeoffrey Avery

rGeoffrey Avery

Programmer, Perceptyx


Wednesday June 9, 2021 17:30 - 18:30 EDT
Zoom
 
Thursday, June 10
 

11:00 EDT

Rummaging in the clOOset
With all of the talk about bringing modern-OO to the Perl core, you might wonder what "modern" is.

This is not an easy thing to answer, but we'll talk about the history of OO, ways to think about OO today, why Dr. Alan Kay is brilliant, and explore OO in other languages.

Object-oriented programming is, sadly, something that is widely misunderstood. When done well, it's brilliant. When done poorly, it leads to rants by developers about why OO is useless and we should all use [insert favorite paradigm here] programming.

Sadly, this talk won't be covering much about doing OO well for the simple reason that there's too much to cover and I have to cut _something_. But we'll hit some of the high points. What we _plan_ to cover is:

* A Brief History of OO
* Why Dr. Alan Kay hates us all
* How OO is used today
* How other languages approach OO

Examples for Perl will often use [Corinna](https://github.com/Ovid/Cor/wiki) syntax, while examples from other languages are often NSFW and may cause gastrointestinal distress. At a minimum, for comparisons, we'll touch on Ruby, BETA, Python, and maybe Java. All of these languages have interesting features that are worth considering.

(And you in the back, shut up about Eiffel already; I only have 50 minutes)

Speakers
avatar for Curtis “Ovid” Poe

Curtis “Ovid” Poe

All Around the World


Thursday June 10, 2021 11:00 - 11:50 EDT
Zoom Room 1
  Track 1

11:00 EDT

Rescue and renew: how to get legacy open source projects unstuck
You depend on scores of open source applications, frameworks, and libraries. One hasn't released for years. Another is struggling with a big rewrite or a difficult maintainer.

How do you get a legacy OSS project unstuck? Especially if you don't already maintain it? I've done it and I'll share how.

I've helped get several legacy open source software projects unstuck -- expediting releases, unblocking volunteer contributors, gathering first-time funding, and more. I'll share success stories (one only took 15 hours of work), and I'll discuss the 5 major ways OSS projects get stuck (strategy, team, interfacing, workflow, and money) and how to address each. And yes, a contributor who's never worked on the project before can be the catalyst that revives it or gets a long-delayed release out the door.

You'll come away from this talk with steps you can take to rescue and renew OSS projects - regardless of language, framework, or platform.

Speakers
avatar for Sumana Harihareswara

Sumana Harihareswara

Founder & Project Manager, Changeset Consulting
Sumana Harihareswara is an open source contributor and leader who has contributed to pip, GNOME, MediaWiki, Dreamwidth, GNU Mailman, and other open source projects -- and is working on a book to teach what she's learned along the way. She has keynoted LibrePlanet and other open source... Read More →


Thursday June 10, 2021 11:00 - 11:50 EDT
Zoom Room 2

12:00 EDT

Getting Really Testy With Perl: Unit testing 45_000 modules.
Unit testing in Perl is straightforward. It's especially helpful when upgrading Perl versions from, say, 5.8 to 5.30 or moving to git with sandboxes. One organization I worked with had 75_000 modules, about 45_000 of them were active, all of them had to be tested. This is how we did it.

Longstanding code bases often have many pieces of code lying around, often without specific tests written for them. This kind technical debit is a major cause of upgrade phobia in management: "How can we be sure it won't break when we install the new version????"  One fix is unit testing: Validating that all of the code passes basic standards. These can range from simple "use_ok" to ensuring that all of the symbols in @EXPORT or @EXPORT_OK really are defined in the necessary modules. The trick is in automating it with a combination of shell/perl to install the tests and flexible tests that investigate the code using metadata. The talk describes some issues I've dealt with in situations testing 45_000 modules or validating @EXPORT and @EXPORT_OK were populated properly. The basic techniques work for any size code base and are big help during upgrades or with CI platforms like Jenkins that can run the tests regularly and find issues quickly. Mixed with a bit of TAP and Inline this makes a nice recipe for testing integration in multiple languages at once.

Speakers
avatar for Steven Lembark

Steven Lembark

Yo!, Workhorse Computing
I've been working with Perl since the 1990's, using it for everything but salads -- texture isn't quite right. Most of my work with Perl has been with web back ends, financial data, bioinformatics, sysadmin/DBA utilities, ETL, automation, and occasionally flying a quad-copter.


Thursday June 10, 2021 12:00 - 12:50 EDT
Zoom Room 1
  Track 1

13:00 EDT

Machine Learning In Pure Perl
Everything You Always Wanted to Know About Machine Learning In Perl
(But Were Afraid To Ask)

What is Machine Learning?
Why is ML important?
How does ML work?
How is ML different from Artificial Intelligence?
How can ML benefit your Perl projects?

Learn the answers to these questions, and more!

In this talk, we will learn the basics of Machine Learning in pure Perl, including concepts such as the following...

The 4 types of ML algorithms:
- supervised
- semi-supervised
- unsupervised
- reinforcement

Common ML algorithms:
- K-Nearest Neighbor
- Learning Vector Quantization
- Self-Organizing Map
- Locally Weighted Learning
- Linear Regression
- Logistic Regression
- Decision Tree
- Naive Bayes
- K-Means Clustering
- Support Vector Machine
- Random Forest
- Dimensionality Reduction Algorithms
- Gradient Boosting algorithms

We will review Perl source code samples from select algorithms, run live demos, and analyze the results.

If you have always been curious about Machine Learning in Perl, or if you are already an ML programmer looking to expand your knowledge, then this talk is for you!

Speakers
avatar for William N. Braswell Jr.

William N. Braswell Jr.

President & CEO, Auto-Parallel Technologies, Inc. & ChatGPU.ai
Creator of RPerl & CloudForFree & Perl Town Hall, Co-Creator of the Perl Community Roadmap.Scouter, Juggler, Mormon, Perl Monger, Serial Entrepreneur, Volunteer, Aspiring Astrophysicist, Community Organizer, Family Man.


Thursday June 10, 2021 13:00 - 13:50 EDT
Zoom Room 1
  Track 1

13:00 EDT

Even You Can Release Perl
Perl is blessed with regular monthly developer releases and regular annual stable releases. The talk tries to demystify the role of the Perl Release Manager and gives a look behind the scenes of doing a Perl release. Even if you don't plan on releasing Perl, the steps and approaches taken by the Perl release process can be interesting.

Speakers

Thursday June 10, 2021 13:00 - 13:50 EDT
Zoom Room 2
  Track 2

14:00 EDT

Birds of a Feather (Community Get Togethers)
https://github.com/perlconference/tprc-2021-cloud/wiki#bofs

BOF stands for Birds of a Feather. These are informal get-togethers planned by attendees and can be on any topic, technical or not. Just add a new page and describe your BOF. Make sure to say when and where you're meeting!


Speakers
avatar for Todd Rinaldo

Todd Rinaldo

Perl Developer, cPanel
Todd works at cPanel L.L.C. as a Perl Developer and sometimes B::C / p5p hacker. He lives with his wife and son in Houston, TX. Todd is a CPAN maintainer.


Thursday June 10, 2021 14:00 - 15:00 EDT
Zoom

15:00 EDT

Perl's Amazing Time Machine
Using Perl's custom keyword mechanism we can add new syntax and features, even to versions of Perl released years ago. As it stands, the core mechanism is very low-level and hard to use correctly, but there is a better way.

We'll first take a look at some existing modules that provide syntax extensions, and demonstrate that most of them work as far back as Perl 5.16, even though the modules themselves are much newer than this. We'll then take a brief look at how early versions of those modules were implemented, to demonstrate what is involved in that. Finally we shall take a look at a newer, much simpler method of providing the same - along with a list of benefits and other attractions of this new technique.
https://docs.google.com/presentation/d/1wYXcf6ZmbG7o_OHmrfCMbVLGcYrahpaAjuJYR3_vePU/edit

Speakers

Thursday June 10, 2021 15:00 - 15:50 EDT
Zoom Room 1
  Track 1

15:00 EDT

Valiant - Heroic validations for Moo and DBIC classes
Valiant is a CPAN distribution that provides validations for your Moo and DBIx::Class result classes that is based on the popular and successful system integrated with Ruby on Rails.

# Example

package Local::Person;

use Moo;
use Valiant::Validations;
use Valiant::Filters;

has name => (is=>'ro');
has age => (is=>'ro');

filters_with => 'Trim';

validates name => (
length => {
maximum => 10,
minimum => 3,
}
);

validates age => (
numericality => {
is_integer => 1,
less_than => 200,
},
);

validates_with 'MySpecialValidator' => (arg1=>'foo', arg2=>'bar');

my $person = Local::Person->new(
name => 'Ja',
age => 300,
);

$person->validate;
$person->valid; # FALSE
$person->invalid; # TRUE

my %errors = $person->errors->to_hash(full_messages=>1);

# \%errors = +{
# age => [
# "Age must be less than 200",
# ],
# name => [
# "Name is too short (minimum is 3 characters)',
# ],
# };


# Description

Valiant (https://metacpan.org/pod/Valiant) is a set of Moo roles and DBIC components that integrate validations directly into your Moo classes or DBIx::Class result classes. Provides a domain specific language which allows you to defined for a given class what a valid state for an instance of that class would be and to gather reportable error messages. Used to defined constraints related to business logic or for validating user input (for example via CGI forms).

When we say domain level or business logic validation, what we mean is that invalid data is a possible and expected state that needs to be evaluated and reported to the end user for correction. For example when writing a web application you might have a form that requests user profile information (such as name, DOB, address, etc). It's an expected condition that the user might submit form data that is invalid in some way (such as a date of birth that is in the future) but is still 'well formed' and is able to be processed. In these cases your business logic would be to inform the user of the incorrect data and request fixes (rather than simply throw a 500 server error and giving up).

This differs from type constraints (such as Type::Tiny) that you might put on your Moo attributes which are used to express when attributes have values that are so unacceptable that no further work can be done and an exception must be thrown.

Valiant fits into a similar category as HTML::Formhander and FormFu although its not HTML form specific. Prior art for this would be the validations system for ActiveRecords in Ruby on Rails and the Javascript library class-validator.js, both of which the author reviewed extensively when writing this code.

# Outline of proposed talk

1) Quick overview of validation distributions on CPAN and why I chose to write yet another one
2) Basic Moo example
3) Discussion of built in validators
4) Creating a custom validator
5) Using roles and inheritance
6) Basic DBIx-Class integration
7) DBIC integration with nested related results
8) Example web application (written in Catalyst)


Thursday June 10, 2021 15:00 - 15:50 EDT
Zoom Room 2
  Track 2

16:00 EDT

Cross-platform native GUIs: {trade,pay}offs, {integra,distribu}tion
Choosing to create a cross-platform GUI presents different challenges from other kinds of applications. I'll talk about why I chose that path, what I learned/built along the way, and the (Perl) tools I had to write to make it manageable.
I want you to write native GUI applications (in Perl) and I'll show you how you can

  • Fight for the `$USER`.
  • Act on `localhost`.
  • Own your data.

With native applications you can use all the capabilities of your snazzy computer — this is computing without artificial limits.

  • Learn why I think you should consider writing a native GUI app in 2021. No, I don't mean make a web application and wrap it in a standalone browser — though what you learn from my talk will make that easier too.
  • Are we deploying once on homogeneous infrastructure? You wish. Learn from all the nerve-racking build failures I slogged through.
  • We're going retro and bringing back the 90s. The good parts hopefully.
  • A wild PDL appears! But how? You'll have to attend to find out.

Presentation (will be) uploaded to https://github.com/zmughal-biblio/talk-tprc2021cic-cross-platform-native-guis-20210610.

Speakers
avatar for Zaki Mughal

Zaki Mughal

Consultant


Thursday June 10, 2021 16:00 - 16:20 EDT
Zoom Room 1

16:00 EDT

Koha
Koha, "the world's first free and open source library system", is a big application used by lots of libraries around the world. It also has a big developer community, which hardly overlaps with the "Perl Conference Community".

Maybe this talk can help us to join forces.

I recently started to work on a project that uses Koha, https://koha-community.org/. While I've heard about this project, I (as most of the Perl people I know) have never actually looked into the project and it's big community. This has now changed (for me), and I have found a very helpful and smart group of people who work with old to ancient code (and even more ancient data formats..), but seem to manage the "Theseus ship" transformation very well.

Currently, Koha is a (to me still) weird mixture of old-school CGI scripts (run via mod_perl or Plack), a Mojolicous API, Template::Toolkit and a *lot* of tooling.

In this talk I want to show a few of the nice features of Koha, and some of it's "interesting" internals.

And maybe we can get a few more Perl experts to join Koha development?

Speakers
avatar for Thomas Klausner

Thomas Klausner

mostly upright, sometimes on a bicycle, plix
Just in case you like to know, I'm currently spending my time as a father of 2 grown-up sons, Perl hacker who is not afraid to touch other tech, sort-of DJ, bicyclist, cook & taker-of-pictures - while being 40+ years old but too lazy to update my profile once a year.


Thursday June 10, 2021 16:00 - 16:20 EDT
Zoom Room 2
  Track 2

16:30 EDT

How to make Perl more welcoming to beginners
Do you want to make Perl and its community more welcoming to beginners? Come along and find out how you can make a positive impact and how TPF can help.

Description:
The Perl Foundation kicked off 2021 with a survey to find out how we - both the Perl Foundation and the broader Perl community - can make Perl more welcoming to beginners. In this talk we:
* Describe who responded to the survey.
* Summarise the types of support they need.
* Explain the work TPF is now undertaking to address these needs.
* Explain how you can help, and how the TPF can support you.

Speakers

Thursday June 10, 2021 16:30 - 16:50 EDT
Zoom Room 2
  Track 2

16:30 EDT

Look, ma, no containers! Workflow automation in Perl
Perl is everywhere, and that includes most base configurations in CI/CD environments. Leveraging the system Perl they have, and the libraries installed by default is quite easy if you know how. In this talk we'll tell you how to use your favorite language in Travis, GitHub Actions and others.

I was very happy the day I discovered I could use Perl in any GitHub action, since it's installed there *by default*. From then on, I discovered it can also be used in other environments, such as Travis, and even Docker Hub. Doing a bit of automation using Perl is incredibly easy that way. We'll tell you how to do common tasks using Perl, as well as how to use installed libraries, install your own, or use Github::Actions, a CPAN module, to help you write GitHub actions steps.

The main advantage is the presence of a Git Perl module there, but there are many other things you can do to.

Speakers
avatar for Juan Julián Merelo Guervós

Juan Julián Merelo Guervós

Professor, University of Granada
JJ Merelo has been using Perl since 1993 and contributing to Perl 6 since 2017. He is professor at the University of Granada, and researcher in the field of machine learning, complex systems and evolutionary algorithms. He organized YAPC::Europe in 2015.


Thursday June 10, 2021 16:30 - 17:20 EDT
Zoom Room 1
  Track 1

17:00 EDT

Our shared vision of Perl
What are the challenges of the Perl ecosystem, and how can we make it flourish? Come along to see how the The Perl Foundation is addressing these questions, and what we know so far.

The Perl Foundation is running a survey to identify the shared values of the Perl community, and their vision of the Perl ecosystem in years to come.

The goal is to provide information on which The Perl Foundation, community groups, and individuals can make informed decisions and plans for the future.

In this talk we’ll explain why this research is needed, how we’re collecting the data, and what we have learned so far.

Speakers

Thursday June 10, 2021 17:00 - 17:20 EDT
Zoom Room 2
  Track 2

17:30 EDT

Lightning Talks Day 3
Today's schedule, possibly in order

  • Cryptographically agile password hashing with Crypt::Passphrase - Leon Timmermans 
  • arithmetic operations on parallel data structures in perl - Joseph Brenner 
  • Sneek Peek at Épée, a WIP Raku Web Framework - Daniel Sockwell
  • shinyperl - Nicolas Mendoza
  • End of Conference - Todd
     

Speakers
avatar for rGeoffrey Avery

rGeoffrey Avery

Programmer, Perceptyx


Thursday June 10, 2021 17:30 - 18:30 EDT
Zoom
 
  • Timezone
  • Filter By Date The Perl and Raku Conference (In the Cloud) Jun 8 -10, 2021
  • Filter By Venue In the Cloud
  • Filter By Type
  • Plenary
  • Track 1
  • Track 2
  • Audience


Filter sessions
Apply filters to sessions.