Loading…
Attending this event?

Sign up or log in to bookmark your favorites and sync them to your phone or calendar.

Wednesday, June 24
 

10:00am

BOF Meetings
Wednesday June 24, 2020 10:00am - 11:00am
Hallway++

11:00am

Opening
Wednesday June 24, 2020 11:00am - 11:20am
Zoom Channel 1

11:30am

Perl Keynote: Get better, not get by
Where is Perl going - what's going to happen in the upcoming year or two or three.

Speakers
avatar for Sawyer X

Sawyer X

Booking.com


Wednesday June 24, 2020 11:30am - 12:20pm
Zoom Channel 1

12:30pm

Test2::Aggregate: Blazing fast unit tests & more
An intro to Test2::Aggregate, an aggregator module that can work with any test framework, particularly Test2::Suite, able to dramatically increase the speed of tests - especially large volumes of small unit tests. There will be a focus on how to start integrating the module into a test suite without disrupting the workflow and how to deal with various caveats of aggregation. Additionally, various other ways to use the module will be presented, such as profiling, testing flakiness / finding conflicts, generating reports, testing aggregation etc.

Speakers
avatar for Dimitrios Kechagias

Dimitrios Kechagias

Principal Developer, SpareRoom
A bit over 15 years ago, I started using Perl at the Stony Brook Algorithms lab (now known as the Data Science lab), in NLP and computational finance applications as a CS grad student.I worked on large scale Perl systems frequently after that, mostly in Natural Language / Linguistic... Read More →


Wednesday June 24, 2020 12:30pm - 12:50pm
Zoom Channel 1

12:30pm

Using Perl to parse terabytes of mission critical variable semi-structured data with 100% accuracy (with a big twist)
3 security doors, a PC with no external access, and terabytes of semi-structured data needing parsing with big money riding on it. Would Perl be up for the challenge?

The twist will be revealed in the talk (it’s a doozy).

A large number of financial documents needed parsing. Accuracy was mission critical and money was literally riding on it. There was no specification and the meaning of some data was not even known to our client contacts. Many many years of data. The format shifted over time. It’s in a binary print format I had never heard of.

Would a very loose Backus-Naur Form approach work? Discuss.

Speakers

Wednesday June 24, 2020 12:30pm - 12:50pm
Zoom Channel 2

1:00pm

Data logging with Perl – for Science!
In this talk I’ll show how I’ve used Perl and Raspberry Pi’s to build various data loggers for our research institute, including greenhouse gas measurements from an airplane, battery-powered CO2 loggers with a Mojolicious interface, and more.

Speakers
avatar for Hauke D

Hauke D

IGB Berlin
https://metacpan.org/author/HAUKEXhttps://www.perlmonks.org?node=haukex


Wednesday June 24, 2020 1:00pm - 1:50pm
Zoom Channel 1

1:00pm

My Private Weather
To display weather information, web pages and apps want access to my location data. I don't want to share my location data. My solution is to prepare the Free data from the German Weather Service myself and to deliver it via a small, offline-capable webpage/webapp/PWA to my mobile phone.

Speakers

Wednesday June 24, 2020 1:00pm - 1:50pm
Zoom Channel 2

2:00pm

Having nice things with CPAN
CPAN is the sum total of 20 years of contributions to the Perl community. Arguably the language would be very different without it. We plan to discuss and propose solutions to the following problems:
  1. Contributors come and go. However their modules live forever. How can we better maintain them?
  2. Changes in Perl sometimes break large swaths of CPAN, making it hard to convince all authors to fix the problem even when the fix is simple.
  3. Developers often coding down to the lowest possible version of Perl.
  4. Modules old and new have inconsistent structure and metadata making tooling and analysis very difficult.

Speakers
avatar for Todd Rinaldo

Todd Rinaldo

Perl Programmer, cPanel LLC
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 24, 2020 2:00pm - 2:50pm
Zoom Channel 1

2:00pm

Awaiting Mojolicious
Mojolicious has added industry standard features like Promises/A+ and async/await support. Those alone make writing asynchronous web applications much easier than it used to be, indeed its a whole new ballgame. I’ll cover some common async needs and their related patterns with my usual style of lots of example code that’s all available to run from the repo (and as always, including tests). I’m excited to share the new features (and a few old favorites) with everyone!



Speakers

Wednesday June 24, 2020 2:00pm - 2:50pm
Zoom Channel 2

3:00pm

Refactoring and Readability: Crouching Regex, Hidden Structures
Under-embraced: Regexps, Deep data structures, Trees.
They all seem hard to learn, and hard to read, with minimal benefit.
They actually make code _more_ readable.
Usually :^)
This is their intro, via refactoring instead of examples, with clear on-ramps, and how to tell when they are worth learning.

Speakers
avatar for Bruce Gray

Bruce Gray

Consultant and Contract Programmer, 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 →


Wednesday June 24, 2020 3:00pm - 3:50pm
Zoom Channel 1

3:00pm

Perl + WebAssembly
Let’s write Perl bindings in WebAssembly (Wasm)! You’ve heard of WebAssembly: a portable bytecode that facilitates the implementation of high-performance applications inside web pages, but it is also useful for writing fast sandboxed extensions in a number of programming languages, including Perl.

WebAssembly (Wasm) was developed as a fastsafeportable bytecode that could be used by web browsers in situations where plain JavaScript is not appropriate. It can also be useful in server applications, where the sandboxed nature of the technology allows running code that might be untrusted or might misbehave in subtle ways. As the applications for this technology are growing, a number of languages are getting their own WebAssebly interfaces that allow them to write fast, safe and portable extensions in any of the growing list of languages that can target WebAssembly, including Rust, Go and C.

In this talk I will discuss the basics of using WebAssembly using Wasmtime, an open source WebAssembly run-time. I’ll be focusing on using it from Perl using Wasm::Wasmtime, but will also touch briefly on how easily you can use a WebAssembly extension compiled just once, in a number of different languages, like Python or Node.js. We will spend some time comparing and contrasting using WebAssembly with related technologies that cross the language barrier like XS and FFI. I’ll also discuss WebAssebly techniques and technologies that I hope will be useful in Perl in the near future. Future specifications like WebAssebly Interface Types that should make it easier for different languages to talk to each other using higher level types. There should also be time to talk about future technologies like Lucet, the WebAssebly native compiler, for even faster execution.

Speakers
avatar for Graham Ollis

Graham Ollis

Fastly
Graham Ollis is a Senior Software Engineer at Fastly. In his free time Graham leads the Perl open source projects Platypus (FFI::Platypus) and Alien (Alien::Build).


Wednesday June 24, 2020 3:00pm - 3:50pm
Zoom Channel 2

4:00pm

Using Moo In Modulinos
The "modulino" format allows a command line script to behave like a module that can be tested with familiar test harness tools (i.e. Test::More and Test::MockModule) without executing it, often achieving very high coverage numbers. It is only natural to bring Moo to the game.

The basic idea of a “modulino” is to take advantage of the caller() function to determine if a script is being run from the command line or being included by a require statement. This allows the code to behave as either a normal script or as a module. It is the latter behavior that enables a modulino to be fully testable without having to execute it and capture the output somehow. It allows full unit testing with tools such as Test::More and Test::MockModule.

Moo brings a well-known OO framework to the party to help organize the script more like a module and provide command line parameters as object attributes.

This talk will demonstrate with simple scripts how Moo and Getopt::Long can play nice with each other and how the modulino structure benefits testing. A Role will be introduced, MooX::Role::CliOptions, to show how coding standards can be established for standard command line options.

Speakers
avatar for Jim Bacon

Jim Bacon

Brandify
TL:DR - I am a grumpy old man who loves Perl.I first saw Perl v1 when it was first released and decided I would stick with `awk`, `sed`, `grep`, etc. Then in the mid-90s I started using Perl on a regular basis for admin work at an ISP. I have been using nothing but Perl ever since... Read More →


Wednesday June 24, 2020 4:00pm - 4:50pm
Zoom Channel 1

4:00pm

Web Dev: Generations
This talk will show the most important new developments in web dev, the history of these technologies, how and why they've been improved, current best practices, and things to watch for in the future. Emphasis will be on features usable today on any website without complex development frameworks.

Are you struggling to stay up-to-date with the state of web development? Are you interested in why the web sites you maintain are using tables everywhere? Would you like to know some of the wonderful things that have been created in the last 30 years to make web development easier?

In this talk, Doug Bell will show the most important new developments in web technologies. In addition, he’ll explore the history of those technologies, how they’ve been improved, current best practices, and things to watch for in the future.

If you’re a former web developer looking to see what’s new, or a current web developer looking to see how we got here, this talk is for you. Emphasis will be on features usable today on any website without complex development frameworks. Some experience in HTML, CSS, and JavaScript will be helpful to understand the example code.

Speakers
avatar for Doug Bell

Doug Bell

Data Conversion Developer, Grant Street Group
[Doug Bell](http://preaction.me) has been developing websites with Perl since the 1990's. He's the maintainer of [CPAN Testers](http://cpantesters.org) and the organizer of [Chicago Perl Mongers](http://chicago.pm.org). He loves [Mojolicious](http://mojolicious.org) and spends a lot... Read More →


Wednesday June 24, 2020 4:00pm - 4:50pm
Zoom Channel 2

5:00pm

What is Autonomous Testing?
Classification of types of autonomous testing: - Types of functionality recognition/code generation + Discovery/rules-based + Pattern-recognition-based + Combinatorial-based - Types of testing: + Regression + Discovery

How do different types of systems under test affect tests support? What types of autonomous tests are one-off and what types are supportable.

Will walk through use cases for each type and when they are applicable. Talk about cases where all of them are not applicable. How autonomous testing can be integrated into CI/CD. Where integration to CD is possible and where it is not possible.

You’ll see different examples in practice.

Speakers
avatar for Artem Golubev

Artem Golubev

CEO, testRigor


Wednesday June 24, 2020 5:00pm - 5:20pm
Zoom Channel 1

5:00pm

Music and Software Management: Skill Transfer from the Orchestra to the Workplace
Public speaking. Team management. Efficiency. Problem Solving. Leadership. All these terms commonly refer to the workplace, and for most people, they are a challenge.
These same words apply to the orchestra. Musicians deal with and solve these issues on a daily basis. What can we learn from them?


An orchestra is usually given as the perfect example of harmony. Very different instruments, sometimes very far from one another, a different music sheet, and yet, unity is achieved. Music is made, and it’s beautiful. Achieving this harmony is not easy, and requires a lot of work from everyone. Being a good musician is not enough. Being able to listen to the other musicians, focusing, following the conductor during rehearsals and on concert night, managing stage fright; all these steps are necessary, and by no means easy. Yet, musicians do it every day. The qualities they develop can be transferred to the work place: solving conflicts, overcoming the fear of public speaking, managing opposite points of view and personalities, creating a positive relationship between a manager and his team… There is lot to learn from the orchestra!


Wednesday June 24, 2020 5:00pm - 5:20pm
Zoom Channel 2

5:30pm

Lightning Talks
Speakers
avatar for rGeoffrey Avery

rGeoffrey Avery

Perceptyx


Wednesday June 24, 2020 5:30pm - 6:30pm
Zoom Channel 1

6:30pm

BOF Meetings
Wednesday June 24, 2020 6:30pm - 7:30pm
Hallway++
 
Thursday, June 25
 

10:00am

BOF Meetings
Thursday June 25, 2020 10:00am - 11:00am
Hallway++

11:00am

Lightning Talks
Speakers
avatar for rGeoffrey Avery

rGeoffrey Avery

Perceptyx


Thursday June 25, 2020 11:00am - 11:50am
Zoom Channel 1

12:00pm

Further Adventures in QA for the Perl 5 Core Distribution
As compilers like gcc and clang advance, they probe deeper for weaknesses in source code, generating additional build-time warnings.  These enable Perl 5 contributors to write more accurate and portable code.  In this talk we discuss tools we have written in the past year to identify such warnings.

Speakers
avatar for James Keenan

James Keenan

Perl 5 Porters


Thursday June 25, 2020 12:00pm - 12:20pm
Zoom Channel 1

12:00pm

Writing a good Dockerfile for Perl apps
Most intros to Docker only show overly simplified Dockerfiles.

In this talk I will show various ways you can improve Dockerfiles to generate better (smaller) containers. I will use Net::Matrix::Webhook as an example, showing some ways bring container size down to 25% of what a “default” Dockerfile would produce.

Speakers
avatar for domm

domm

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 25, 2020 12:00pm - 12:20pm
Zoom Channel 2

12:30pm

What can you do with YAML in 2020?
While some years ago you could only do very basic YAML stuff in Perl, that has changed!

Over the last years, a lot of improvements have been made to the Perl YAML Ecosystem, also thanks to The Perl Foundation and the Perl Toolchain Summit.

Bugs in existing YAML modules have been fixed (syntax parsing errors, memory leaks, etc.), secure loading of untrusted input has been made possible.

With YAML::PP a module has entered CPAN which is one of the first three projects that was written by using the cross-language yaml-test-suite.

It aims to be as powerful as PyYAML. Successful tools like Ansible are using PyYAML. Although Ansible just uses a small part of what’s possible in PyYAML, it couldn’t have been written in Perl. I want to make that possible.

I’ll show you what kind of cool stuff you can do with YAML::PP already!

You should already be familiar with the basic YAML syntax.

Speakers
avatar for Tina Müller

Tina Müller

SUSE Software Solutions
YAML, YAML, YAML


Thursday June 25, 2020 12:30pm - 12:50pm
Zoom Channel 1

12:30pm

Schema Updates and How to Make Them Zero Downtime
Your fantastic application is online and it started attracting users. Suddenly, you realise you need to change the schema of the data. How to do it properly for both the running system and possible future deployments? How to do it without crashing the running application?

If we imagine a database powering our application, each schema change comes in two forms: one is the actual ALTER TABLE, the other one is the updated CREATE TABLE that will be used in future deployments. Blindly applying the former might break the application for users that are using it at the moment of the change. If your application is more complex, it might have several components with their own schemas. How can we change the user without breaking the whole application? Perl will be used in the examples, but the findings are valid in general.

Speakers
avatar for E. Choroba

E. Choroba

Senior SW Developer, GoodData


Thursday June 25, 2020 12:30pm - 12:50pm
Zoom Channel 2

1:00pm

TPF panel - come talk to us
The Perl Foundation are here to support the Perl and Raku communities.

Members of the board will update you on our plans and initiatives, and then it is your opportunity to share your ideas, concerns and to ask us questions.

Following introductions and a TPF update, attendees will have the opportunity to ask questions.

Speakers
avatar for Stuart J Mackintosh

Stuart J Mackintosh

President, The Perl Foundation
avatar for Dave Rolsky

Dave Rolsky

ActiveState Software, inc.
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 Raku, JS, and Go.Way back when, he co-wrote Embedding Perl in HTML... Read More →


Thursday June 25, 2020 1:00pm - 1:50pm
Zoom Channel 1

1:00pm

Doccing Raku
Unlike many (maybe most) free software projects where the same people write the code and the documentation for it, it was a design decision from the beginning that documentation of Raku, its classes and more meta stuff, would be clearly separated from the interpreter (and the rest of the parts of Raku) itself. A documentation repository was created by Moritz Lenz, who started to hammer away at writing down what every piece of Raku did, and how to put together programs and modules that use it. This documentation repository eventually became host to three different things: the source of the documentation itself, written in Pod6, a SLANG within Raku for documentation, but also the command that indexes and shows that documentation, a series of modules that process and extract metadata and source from that documentation to generate a static website.

The management of the site became a do-ocracy, with anyone with a commit bit deciding on where to go next, which issues to address, which PRs to accept, in a model that is actually not so different from the rest of the Raku ecosystem, but which makes sustainable and, over all, long term development, a challenge. In this talk we will first analyze the model of Raku documentation and what kind of lessons can be learned from it for software development at large, and Perl and Raku development in particular. Then we will analyze data on contributions to the Raku documentation repository and see how this software development model has worked out, what it lacks and what can be done to improve it just a tiny bit.

In 2019, everything (kind of) changed. A student, Antonio Gámiz, worked on a new system to parse, index and generate the documentation called Documentable. This was intended as a plug-in replacement for the former doc-site generation script, but it’s eventually something that’s a bit more than that. It creates a stack of modules that are not monolithic, have many endpoints for use, and can become a new ecosystem for document processing. This is still very much a work in progress, but it’s reduced by 75% the time needed to generate the whole documentation, and almost by 90% the time needed to regenerate it.

This talk is, at the same time, an presentation of the documentation as an entryway for the community, a overview of Raku design, and a technical talk on how to create a good (maybe not excellent) documentation processing and rendering system.

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 25, 2020 1:00pm - 1:50pm
Zoom Channel 2

2:00pm

Guac!
I am going to present a fully static parser for Perl or a Good Enough subset of Perl.

It doesn't need runtime. It doesn't use regex. It doesn't use PPI. It doesn't require any custom code.

Speakers
avatar for Sawyer X

Sawyer X

Booking.com


Thursday June 25, 2020 2:00pm - 2:50pm
Zoom Channel 1

3:00pm

Setting up an internal Darkpan
As the world moves toward lightweight microservices we are often faced with the dilemma of pulling a large shared-code repository into our containers (rendering them anything but lightweight), or copying in shared libraries (losing the benefits of upstream progress), or …. setting up a Darkpan. With a Darkpan it is easy to convert a repository of shared modules into independent distributions that can be pulled down by containers as they build using typical CPAN tooling such as cpanm and Carton in conjunction with Docker.
I’ve had to do just this, recently, and implemented my work both using a Jenkins pipeline, and with a Stash/Bitbucket to Docker to OpenShift process. In this discussion we will explore the why and how of setting up a Darkpan.

Speakers

Thursday June 25, 2020 3:00pm - 3:50pm
Zoom Channel 1

3:00pm

Why raku? The Physics::Unit edge.
As raku matures, we need useful basic eco-system modules to bring the unique strengths and cultural style of raku to the wider world. Imagine a universal library of extensible raku classes spanning the sciences - Physics, Chemistry, Bio-sciences, Economics, Maths, Ecology, Virology. For this vision to be possible, one core tool is a standard module to represent real world measurements of values and units.

Physics::Unit and its sister Physics::Measure, combine the unique capabilities of raku to build on the popularity of this perl5 module in a newly released raku native rewrite. This talk is in two parts (i) highlighting the usefulness of raku’s unique combination of capabilities - Grammars, Unicode, Rats, infix/postfix operators, Types, OO - all had a place in the implementation and (ii) showcasing how these modules can be used as a natural extension for scientists or engineers at any skill level.

Unlike any other Units module, raku makes it possible to apply Units for the full range of use cases - source code examples and demonstrations will cover embedded postfix units, unit conversion, unit math, unit / object geometry in Jupiter notebooks. With support for US, Imperial and SI units covering base units, derived units and user defined units and parsing.

Speakers

Thursday June 25, 2020 3:00pm - 3:50pm
Zoom Channel 2

4:00pm

A Cyber Security Expert's Guide to Secure Programming
Kevin A. McGrail will discuss his tips for Secure Programming in any language but with Perl specifics. He will cover the following topics: CIA Passphrases not passwords Salting and Hashing Support MFA Think Evil SQL Placeholders Do NOT trust User Data Password Reset Risks Error Message Risks Logging Fail2ban POLP Encryption Incident Response Plans Usenix Code of Ethics Virgil, Cyph and Virtru NVDs & CVEs Automation Scrums for Security Secure SDLC SAST/DAST/IAST Software EOL Privilege Elevation QA Process Automation

And more if time permits!

Speakers
avatar for Kevin A. McGrail

Kevin A. McGrail

Director, Business Growth, InfraShield
# Speaker Mini-BioKevin A. McGrailDirector of Business Growth, InfraShieldMember, Apache Software FoundationKevin A. McGrail, aka KAM, Kevin is Director of Business Growth @ InfraShield.com. His team supports cyberphysical security in both Information Technology and Operational Technology... Read More →


Thursday June 25, 2020 4:00pm - 4:50pm
Zoom Channel 1

4:00pm

Hyper and Gathers and Loops... Oh, my!
Raku provides a variety of mechanisms for graceful threaded processing. Queues are nice, handle all of the bookkeeping, and have a fair bit of overhead. Lazy gathers require a bit more planning but can be quite a bit faster with race() or hyper() to make them happen. This talk looks at examples of each, describing the syntax for using them and showing the performance tradeoffs and some ways to benchmark them in your own environment.

Speakers
avatar for Steven Lembark

Steven Lembark

Consultnat, 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... Read More →


Thursday June 25, 2020 4:00pm - 4:50pm
Zoom Channel 2

5:00pm

Using RPGs to Fuel My Coding Habit
I wanted a quicker way to figure out the loot that monsters had. That also turned out to be a good reason to learn how to use a module and understand YAML a bit more.
Once I was able to quickly get loot, what about determining what the kinds of things the players met? It was an ideal excuse to write a dispatch table. Once I had that written I wanted to share it. Instead of trying to figure out how to package it up, I learned how to use the Mojolicious web framework to make it a web app.
Form fillable PDFs make it easy to provide pre-generated characters for players at a gaming convention. What if I could start with a simple YAML file and have a program fill out the PDF for me?
Much of my hobby code I’ve written is to support one of my favorite hobbies, RPGs.
After attending this talk I hope that you will better understand how to:
  • use a module to randomly generate events
  • use a dispatch table instead of nested if structures
  • share a program you wrote that goes from the command line to the web.
  • use your hobbies to improve your skills in other areas of your life
  • sharing your work with a community makes you aware of how you code

Speakers
G

GIZMO

Purdue.pm
I've been using Perl since 1996 mostly as a Linux sysadmin in academia. I try to be the best open source advocate I can.


Thursday June 25, 2020 5:00pm - 5:20pm
Zoom Channel 1

5:00pm

It's the little things: how I improved my command-line and editor experience this year
I spend most of my terminal time in bash and vim, so little slowdowns in either disproportionately drain my time and energy. Since mid-2019, I have smoothed over warts in those tools by creating new shortcuts and by learning more about what the software already offers! Users of any Unix-like environment will find something they can use in this collection of bash, git, vim, and command-line tips. Attendees will learn new ways to decrease their frustration and increase their productivity. -Ofun!

Speakers
avatar for Chris White

Chris White

Patent Agent, Programmer, Inventor
Christopher White is an experienced and productive inventor, public speaker, computer engineer, and patent agent. He is skilled in the analysis and design of digital systems and in obtaining patent protection for electronic, mechanical, and software inventions. He also has extensive... Read More →


Thursday June 25, 2020 5:00pm - 5:20pm
Zoom Channel 2

5:30pm

A Simple Matter Of Programming
There are already great IDEs for both Perl (Padre) and Raku (Comma).
They're both designed to help you write software faster
...by providing a range of syntax-based coding tools.
More importantly, they can both help you rewrite software better
...by supplying a set of language-aware refactoring mechanisms.

There's only one problem: neither of them is Vim
(or Emacs or «your editor-of-addiction here»).

In this talk I'll introduce a new set of modules, designed to
make it easy to add syntax-driven Perl source refactoring
and other useful code transformations to any modern text editor,
or any other scriptable application.

Along the way, we'll explore the horrors of Perl's scoping rules,
navigate the labyrinth of Perl's many argument passing conventions,
and descend briefly into the whirling maelstrom that is
generalized semiautonomous contextual API inference.

We'll also look ahead to examine how I'm planning to implement
the same set of code manipulation tools for Raku, and see why
that's going to be at least two or three times as challenging
...but also an order of magnitude easier.

Speakers

Thursday June 25, 2020 5:30pm - 6:30pm
Zoom Channel 1

6:30pm

BOF Meetings
Thursday June 25, 2020 6:30pm - 7:30pm
Hallway++
 
Friday, June 26
 

10:00am

BOF Meetings
Friday June 26, 2020 10:00am - 11:00am
Hallway++

11:00am

Threaded Text Console UI in Raku
By the time this description is being written the new project named Vikna is still in deep development status. Though most of the critical components are already in place and more to come in the next months. The project is an experiment in creating a UI toolkit written in Raku from ground up. If succeed it will be the first complete terminal UI toolkit for Raku providing easy way for developers to equip their applications with interactive communication to a user.

Internally, Vikna designed to utilize the most advanced Raku language features with focus on being as much parallelized as possible. Yet, life teaches us the importance of the balance and that too much of parallelization might fight back and harm in many possible ways. But when used properly it pays with performance and extra freedom for user code. Say, some code prints diagnostics info while working. Usually one uses print, or say to send it to the console. But what if the code is multithreaded or otherwise asynchronous? How to sort out the mess of interleaving lines coming from different threads? With Vikna one could have one widget per each thread and use it like:

$widget.say: "Hello world!";
And that’s all!

… Ok, ok! Yes, there should be some boilerplate for starting the application. But basically it winds down to something like:

class MyApp is Vikna::App {
has Channel:D $.connection-queue .= new;
method main {
...; # Your application preparation code
start react {
whenever $.connection-queue -> $new-connection { self.start-processing: $new-connection }
}
}
method start_processing($conn) {
my $out = $.desktop.create-child: Vikna::TextScroll, ...;
$out.say: "Let's go!";
start { ...; } # do you work here
}
}

Does it look scary? :)

Speakers
avatar for Vadim Belman

Vadim Belman

Head of Department, Avanta


Friday June 26, 2020 11:00am - 11:50am
Zoom Channel 1

11:00am

System Observability and Distributed Tracing
OpenTracing
Knowing
Is your system slow, or only under certain circumstances or with specific request? OpenTracing and ‘Distributed Tracing’ may be helpful to understand what is going on.

Join this presentation for 50 minutes and quickly gain back zillions of nanoseconds!

Introduction to OpenTracing
From the OpenTracing.IO website:

Distributed tracing, also called distributed request tracing, is a method used to profile and monitor applications, especially those built using a microservices architecture. Distributed tracing helps pinpoint where failures occur and what causes poor performance.

OpenTracing is comprised of an API specification, frameworks and libraries that have implemented the specification, and documentation for the project. OpenTracing allows developers to add instrumentation to their application code using APIs that do not lock them into any one particular product or vendor.

Perl5 and OpenTracing
With an increasing number of Framework Plugins and Integrations, it becomes more and more easy for Application Developers to add instrumentation to an existing (web) application.

These Plugins only have a limited responsibility: to bootstrap a OpenTracing compliant Implementation.

Integrations, on the one hand, need to be capable to extract (implementation specific) tracer information from in incoming request, or, on the other hand, inject that information into an outgoing request to a (micro) service and other sub-systems.

Being ‘open’ or agnostic about third party tracing software services, also means that for each of those there needs to be a specific Implementation.

Some Integration solutions are readily available, others will require more development.

The OpenTracing Perl5 SDK
To make your task as a developer more easy, there are various tools available, most important the OpenTracing Interface POD. And as long as you keep your development stick to those API specifications, life is good. But there are Types and Test to help building compliant Integrations and Implementations.

PR’s are welcome!

Speakers
avatar for Theo van Hoesel

Theo van Hoesel

Programmer, Perceptyx
HTTP::CachingType::Tiny & ValidationOpenAPIREST


Friday June 26, 2020 11:00am - 11:50am
Zoom Channel 2

12:00pm

Creating a distributable gui application in raku
Containers, appimages, flatpaks, and snap images are all solving the problem of running non-polluting, self-contained apps on a variety of Linux distributions in a one size fits all way. We’re going to do that with Raku, creating an application that can be run on a linux system without being tailored to that distribution or for that distribution to have raku installed.

Speakers

Friday June 26, 2020 12:00pm - 12:50pm
Zoom Channel 1

12:00pm

Continuous Integration for Perl with Azure Pipelines
Continuous Integration (CI) is the thing all the cool kids are doing. If you do some CI you will be cool too. You know you wanna! CI lets you ensure that every commit that goes to production was tested against your test suite (you do have a test suite, right?). There are a lot of products for CI, both on premise and SaaS.

Azure Pipelines is one of those SaaS products. The free offering for open source projects allows you to run ten jobs (that’s a lot!) in parallel on Linux, macOS, and Windows. It also lets you run on bare metal or in Docker containers. It supports all sorts of powerful features like multi-stage builds, dependencies, output caching, and more.

We’ll talk about many of those features, using my ci-perl-helpers project for context. I may even do a live demo if I’m feeling foolish. (Spoiler: I often feel foolish.)

You’ll come away with a general understanding of how you might bring CI back to your own projects, whether they’re open source or for your day job (or both), as well as learn how to use my helpers project to test your Perl distributions.

Speakers
avatar for Dave Rolsky

Dave Rolsky

ActiveState Software, inc.
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 Raku, JS, and Go.Way back when, he co-wrote Embedding Perl in HTML... Read More →


Friday June 26, 2020 12:00pm - 12:50pm
Zoom Channel 2

1:00pm

Creating secure decentralized content management systems on Ethereum blockchain with Raku
Classic content management systems are centralized. Even if we speak about the cloud services or the systems with replicated databases — does not matter, data and its processing applications/services are hosted on particular server or pool of servers (providers). If you want to make such system decentralized, you will face the technically complex, time-consuming and expensive task with no any guarantees. But on other hand, in centralized system your provider can falsify data: modify it a little, grant open access (compromise data), spoof or delete. Of course, we do not talk about purposeful falsification: emergency (fire at data centre), hacker attack, mass virus or smth. Nevertheless, you can identify full data loss (or a half, 1/10, etc…), but what’s about small tweak or tamper?! Most likely you will operate falsified data as a trusted one.

If you use decentralized content management systems you avoid collisions considered above: data is stored on definitely interpreted, encrypted ledger within distributed network. Blocks can be decrypted with private keys. Each network member has own private key. As at example above, if hacker get private key on one host and falsify data, corrupted data will store in chain and you can (simply or not) identify what data is trusted/corrupted with comparisons or deep data analysis. Chain contains all data changes with timestamps, so if you identify abnormal activity in your server logs — just mark chain segment as potentially falsified. Moreover, if there is no trust in the provider, then nodes with read-only data access can be launched on its servers, i.e. servers will be used as data backup storage.

The Ethereum blockchain platform performs the necessary and sufficient set of utilities and tools for creating decentralized applications that can be used to store and manage tamper-proof data. Ethereum supports private (Proof-of-Authority) networks, features a smart contract functionality, has a mature ecosystem and well-structured documentation, propagates a quick start and, of course, is FOSS.

Within this talk we will discuss the methods and features of implementation secure decentralized content management systems on Ethereum blockchain with Raku Raku language (formerly known as Perl 6).

The practical part of this talk contains a short research in Raku tools for general programming of decentralized web applications. We will consider hybrid data storage model, the ways to reduce application response latency, implementation of both decentralized top-level applications and smart contracts providing low-level access to the blockchain. At the end we will demonstrate the prototype of CMS Pheix — an open decentralized Raku driven system in a public beta version.

This talk primarily aimed at software architects and developers of tamper-proof data systems, as well as Raku enthusiasts who are involved in blockchain technology and decentralization issues.

Speakers
avatar for Konstantin Narkhov

Konstantin Narkhov

Independent developer
My interests are in the field of real-time systems programming, modeling software for embedded systems development, test automation and software verification. I am working on formalized description of multi-threaded applications, development of automated software generation facilities... Read More →


Friday June 26, 2020 1:00pm - 1:50pm
Zoom Channel 1

1:00pm

HealthCheck - Diagnostics Results for your code
We’ve been moving towards separating our monoliths into microservices, being able to monitor those in a way that’s simple enough to do, but powerful enough to actually be useful is a difficult problem. We are solving it by having each service be able to tell us how it’s feeling by writing diagnostic that tells us whether a part is working correctly. Having a standard for the HealthCheck Diagostic Result format means that we can even implement it in our Go services or those written in any other language.

You’ll learn about the idea behind HealthChecks, plus some of the Diagnostic’s we’ve open sourced and how we’re not only using it to make sure individual instances are healthy enough to be serving requests, but also how we’re finding other ways to use it to increase visibility into how the service is performing.

Speakers
avatar for Andrew Hewus

Andrew Hewus

Developer, Grant Street Group
A perl developer by day, contributing to OpenBSD in his off hours. Andrew spends his time in Portland, Oregon trying to fit Open Source code and community contributions between family and friends.


Friday June 26, 2020 1:00pm - 1:50pm
Zoom Channel 2

2:00pm

Going International in Raku
Writing software to be used by people in different cultures can be a lot of work, with lots of extra boiler plate in many different languages. But things don’t have to be that difficult or messy. Come to find about the new Raku modules that can make internationalization a painless process. Leave knowing how to work with language tags, localization frameworks, special tokens for regexen, and Unicode’s CLDR in a way that is both fully standards-compliant and 100% Raku-ish.


Friday June 26, 2020 2:00pm - 2:50pm
Zoom Channel 1

2:00pm

The Perl 5 Debugger: Wuh?
95% of all debugging is print statements, but once or twice a year, a problem shows up that is best attached with perl5db.pl, the venerable core Perl 5 debugger. Like a light saber, it dates back to a forgotten time and its operations are poorly understood. Unlike a light saber, it is not elegant, and nobody aspires to use it. Also, it can cut limbs right off. Still, it’s a very useful multi-purpose tool, and if you learn how to use it, it can save a lot of time and clear up a lot of mysteries.

This talk will cover what the debugger is, how to use it at a basic and intermediate level, how to customize it, and at least one or two stories about how it is very, very awful.

Speakers

Friday June 26, 2020 2:00pm - 2:50pm
Zoom Channel 2

3:00pm

Improving the perception of Perl and Raku - Marketing
Both Perl and Raku have great strengths and we have more to do so that this can be shared with others outside our community.

During the preparations for FOSDEM, we created banners and messaging to support the great work done before. These were very well received at FOSDEM and we had a great deal of positive feedback however they were created in a hurry and a more strategic process is required.

By having messages and brand assets to hand, it will become easier to put together high quality and professional material to present around Perl and Raku.

People looking to learn a language or go back to something they have used before will be more comfortable if they feel that the brand is strong and matches that of other languages and technologies. It is important for organisations setting out on a project to select appropriate technology and for sponsors to have comfort that Perl is still relevant. Perl and Raku are not suitable for every situation so getting this right will help show where they could be the best solution and equally when they are not.

This is a TPF supported activity, please come along and share your thoughts and ideas - and you don’t need to know marketing to add value. Here are some of the ways you can provide input:
  • tell us what you like about other digital tech brands
  • what has worked for Perl in the past, what has not
  • have you created content, flyers and other material - come and share it
  • what are the strengths and weaknesses of both Perl and Raku compared to other competitive languages
  • why did you choose Perl / Raku?
I hope that we can maintain the conversation after the event and work together to sustain the ongoing activities.

Speakers
avatar for Stuart J Mackintosh

Stuart J Mackintosh

President, The Perl Foundation


Friday June 26, 2020 3:00pm - 3:50pm
Zoom Channel 1

3:00pm

PowerShell for Perl experts
Picking up a second, third… etc. programming language is always easier because you have a reference to a language you already know. But language tutorials are rarely made assuming one language, and worse yet most PowerShell intros are for non-programmers. This talk would be a great opportunity for efficient learning(visualize that scene in the Matrix where Neo wakes up and says “I know Kung-Fu” I will step through all the necessary info one would need to start programming in PowerShell in about 40 minutes. I plan to open with 5 minutes on background and advertising why one might want to consider PowerShell, and end with a list of resources and a take away cheatsheet and Q&A.

Speakers

Friday June 26, 2020 3:00pm - 3:50pm
Zoom Channel 2

4:00pm

USB Devices: How to Drive Your Own
This talk covers the basics of USB control packets, how to capture USB packets for inspection, and how to send usb messages in your programs. Examples given in Raku.

Speakers
avatar for Travis Gibson

Travis Gibson

Programmer, Perceptyx


Friday June 26, 2020 4:00pm - 4:20pm
Zoom Channel 1

4:00pm

A Deep Dive into Measuring Dependency Freshness with LibYear
LibYear is a dependency freshness measure which helps you learn how out of date your project’s dependencies are. While LibYear has considerable value when used as a “spot” metric, something that you just measure once, there is even more power that can be unlocked when you observe how the metric has trended over time. In this talk, we’ll explore a tool, libmetrics, which is able to compute this metric across a project’s history. The libmetrics tool supports many different dependency management tools from many different frameworks. Also during this talk, we’re going to look at graphs of LibYear over time for many different open source projects. By analyzing these graphs, we can see the long term impacts of different decisions, such as when a team decides to start using Dependabot.

Speakers
avatar for M. Scott Ford

M. Scott Ford

CTO, Corgibytes
Leading the Corgibytes technical team is Scott, who has been called the "Bob Vila of the internet.” Scott is a polyglot developer who, at last count, is fluent in over twenty programming languages. Scott’s love of software restoration and remodeling began in college where he and his team were responsible for retrofitting the testing tools for the X-31 jet fighter. Since th... Read More →


Friday June 26, 2020 4:00pm - 4:20pm
Zoom Channel 2

4:30pm

Raku Keynote: RakuAST: a foundation for Raku macros
Raku already invites the programmer to participate in compile time, for example by implementing trait handlers, customizing meta-classes, producing meta-objects in an EXPORT, or using BEGIN blocks directly. These are utilized by a range of modules, such as Red (an ORM), Cro (used for building web applications) and ASN::META (parsing an ASN specification and exporting Raku classes based on the specification).

The key limitation today is that there’s no document object model for Raku code itself. For example, it would be desirable in a web framework to have a Raku regex used for validation on the server side be translated into one usable on the HTML5 pattern attribute - however that would only be achieved today by a program choosing to re-parse the Raku regex syntax itself! Similarly, modules that produce Raku code and EVAL it would be far more robust if they could instead build a tree of objects representing the Raku program. Macros, too, will only reach their potential if the programmer can work with the AST passed in.

Therefore, I’m currently working on RakuAST, a user-facing Abstract Syntax Tree for Raku programs. In this talk, I’ll share the design and implementation progress on that so far, and some of the things it will enable.

Speakers
avatar for Jonathan Worthington

Jonathan Worthington

Jonathan is a key contributor to Raku development. He is the founder and architect of MoarVM, serves as a lead Rakudo Perl 6 developer, and designed many of the Raku concurrency features. He is also architect of the Cro libraries for building distributed systems in Raku, and founder... Read More →


Friday June 26, 2020 4:30pm - 5:20pm
Zoom Channel 1

5:30pm

Lightning Talks
Speakers
avatar for rGeoffrey Avery

rGeoffrey Avery

Perceptyx


Friday June 26, 2020 5:30pm - 6:30pm
Zoom Channel 1

6:30pm

BOF Meetings
Friday June 26, 2020 6:30pm - 7:30pm
Hallway++
 
Saturday, June 27
 

11:00am

Intro to Go Master Class (paid)
See https://tpc20cic.sched.com/tickets for purchasing information

There are a few million new languages making buzz on the Internet these days, and Go is one of them! Go hits a nice sweet spot between ease of coding, speed of execution, and modern features such as type inferencing, concurrency, and a minimalist but well-designed OO system.
In this class, I’ll introduce you to Go basics including syntax, the type system, OO in Go, packages and package management, and concurrency.

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 anyone who wants to learn Go. You must have experience programming in at least one other language, but no assumptions are made about what language that is, nor are you expected to be familiar with Go.

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

Here are what some past students of this class have said:

  • “Dave’s Intro to Go class got me up and running with Go quickly. The many exercises throughout the day helped the material sink in.” – John Thompson
  • “The class was engaging with a series of sections: learning a new concept, coding the concept and validating the code against pre-written tests.” – Anonymous Student

Speakers
avatar for Dave Rolsky

Dave Rolsky

ActiveState Software, inc.
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 Raku, JS, and Go.Way back when, he co-wrote Embedding Perl in HTML... Read More →


Saturday June 27, 2020 11:00am - 6:30pm
Classroom
 
  • Timezone
  • Filter By Date Conference in the Cloud (A Perl and Raku Conference) Jun 24-27, 2020
  • Filter By Venue In the Cloud!
  • Filter By Type
  • Chatting
  • Class
  • Plenary
  • Track 1
  • Track 2