Memoising - standardisation of normalisation

Hopefully, the sesquipedalian polysyllabalisation of the title will have made your eyes glaze over. Now to wake you up: MASSIVE PERFORMANCE GAINZ!

Memoising, as any fule kno, is storing answers after they're calculated, against each set of inputs, so you don't have to keep re-calculating the same thing. If the calculating process is expensive, or even just more expensive than normalising (see below) and a lookup, this can make your programs run faster. Possibly much faster!

This is a thing that works great for computing factorials or Fibonacci numbers. It's a terrible idea for calculating the lengths of simple lists, since normalising would take longer than simply recalculating, and worse would be very unlikely to give repeated hits.

Daily CPAN upload: 600 days

Today is a very special day for me, why? I have now completed 600th day daily upload to CPAN. So what is the big deal? Honestly speaking it is not. Having said that I enjoyed playing this CPAN Game and would like to continue as long as possible. Where did it all started? Well it was one of the blog by Neil Bowers that inspired me and introduced to the fun game. At that I point, I only had handful of modules to work with. I knew I needed lots of distributions to get me going. Nearly a year later, Barbie blog about his completion of one year of daily CPAN upload.

CPAN Regular Releasers - Current Chains

LemonLDAP::NG 2.0.3 released!

Another perl software that I use / like was just released. I will embed the tweet because it has clapping sheep.

LemonLDAP::NG is the Web SSO software youve been looking for - even if you dont use LDAP

Checkout the full release details

GSL of C language binding to Perl - native keyword of Raku language is exported to Perl/SPVM

GSL of C language binding to Perl - native keyword of Raku is exported to Perl/SPVM

I success GSL binding by Perl/SPVM!

GSL of C language binding to Perl/SPVM

I export native keyword to Perl/SPVM. This is greate features of Raku language.

use strict;
use warnings;

use FindBin;
use lib "$FindBin::Bin/lib";

use SPVM 'MyGSL';

MyGSL->stat;
package MyGSL {
  native sub stat : void ();
}

Dibs - Remote Packs

A new article about Dibs (Docker image build system): Dibs - Remote Packs - hope you will enjoy!

Call for volunteers to update OWASP Perl Wiki

Hello Perl Hackers!!

OWASP (Open Web Application Security Project ) is a project that is focused on the visibility of software security and it needs our help updating its wiki entry on Perl related technologies.

Why am I posting this? Well a few months ago OWASP had listed Perl in its list of programming languages but presently Perl has been removed from the listing and I assume this is due to the fact that the Perl section has not been updated.

So if you are still reading this and you are a contributor to any of the Perl 5 and 6 ( cuz why not ) Web frameworks that are in use and available today please consider taking some time to update the OWASP Perl wiki.

The wiki needs updated information about the Web Frameworks that exist for Perl 5 and the available plugins used for Authentication, Authorization and Password policies. The current list of web frameworks listed on the OWASP Perl wiki are ( Catalyst, CGI, Dancer, Jifty and Mojolicious )

Please Note: Wiki Account requests to the OWASP wiki system are subject to approval by the OWASP organization ( so I can't guarantee an immediate response to an account request.)

What's new in Proxmox VE 5.4

Proxmox VE is a virtualization and LXC platform - all written in Perl.

I wrote most of the the Perl client API on the CPAN - and use it with quite a few $clients.

Proxmox VE 5.4 introduces new features:

- Debian Stretch 9.8 and Linux Kernel 4.15.
- New installation wizard for Ceph in the UI,
- New HA policies freeze/fail-over/default for greater flexibility,
- Suspend to disk/Hibernation support for Qemu guests,
- Support for Universal 2nd Factor (U2F) authentication,
- Improved ISO installation wizard,
- New options for Qemu guest creation wizard

View the detailed release notes: http://pve.proxmox.com/wiki/Roadmap

Atomic Updates with DBIx::Class

As we're building Tau Station, a narrative sci-fi MMORPG written in Perl, we've encountered any of a number of challenges, not the least of which is that this is a very "write-heavy" application. Further, because it's a universe where people interact, there's often no clear isolation between what you can change and what I can change. Thus, there's a lot of writing to the database and often to the same data!

By now you've probably heard of the Object-Relational Impedance Mismatch, which is just a fancy way of saying "collections of objects and databases aren't the same thing."

One problem which is particularly difficult is handling "syndicate credits". Syndicates ("guilds" in other MMORPGs) can tax their members and every time a member gets credits deposited in their bank account, a certain percentage goes to the syndicate. So let's say two syndicate members each earn 100 credits at the same time, paying 10% tax to their syndicates. It can look like this:

Rakudo.js update - running tests in a real Chrome

What now works

We now can parcel up and pass tests from our chosen subset under a real Chrome (for testing purposes a Headless Chrome controlled by puppeteer ).

Our test runner is in https://github.com/pmurias/perl6-js-roast-test-runner

It runs tests using a precompiled working version of rakudo.js fetch from npm using a roast revision we know passes.

What's missing or fudged?

Tests that are broken under precompilation on all backends

In the browser we precompile tests before running which means the tests are run differently then
how they are tested on other backends.
As a result a whole bunch of tests fail under precompilation even on the Moar backend.
They need to be fixed as they are real bugs in Rakudo on all backends (as most proper codes
tends to live in precompiled modules not scripts) but that's work separate from the js backend.

Tests that don't make sense in the browser itself.

Hi from dibs... and more

I worked on a tool named dibs in the past months, and I started writing about it:

I hope you will enjoy them!

Perl Weekly Challenge: Week 2

These are some answers to the Week 2 of the Perl Weekly Challenge organized by the hugely prolific CPAN author (and, besides, very nice chap) Mohammad S. Anwar.

Challenge #1: Removing Leading 0's

Write a script or one-liner to remove leading zeros from positive numbers.

A Perl 5 One-Liner

This uses a simple regular expression to remove zeros from the start of the string. Here, we're just using bash for piping four lines with input numbers to a very simple 7-character Perl 5 one-liner.

Swiss Perl Workshop 2019 - Call For Papers

This year's Swiss Perl Workshop is just a few months away, and we're looking forward to another interesting and fun event in Olten. The workshop takes place just a week after this year's The Perl Conference in Riga so perhaps if you're attending one you could spend a little more time in central Europe and attend the other, and if you're planning to give a talk at The Perl Conference then...

Either way, we encourage you to submit talks and we welcome a broad range of subjects, your talk does not have to be specifically Perl related. Share your experience with others, be it your daily messing around with bugs, writing interesting modules, hardware hacking, Perl 5, Perl 6, devops, and so on.

One thing to note for any attendees is that the wonderful kitchen crew from previous years will be helping us again in Olten, and we would like to give them a list of dietary requirements as far as possible in advance. If you need to let us know of this then please tell us by adding information to the SPW Wiki here.

We look forward to seeing you in Olten this August.

Great thanks go to our sponsors, who have already committed to the event:

Thruk 2.28 released

Details available on http://thruk.org/whatsnew/v2.28.html ... and http://thruk.org/changelog.html

Thruk is a multibackend monitoring webinterface which currently supports Naemon, Nagios, Icinga and Shinken as backend using the Livestatus API. It is designed to be a 'dropin' replacement (for Nagios web UI etc) and covers almost 100% of the original features plus adds additional enhancements for large installations and increased usability. Written in perl.

(I am not a project contributor, just a fan who uses it and has "upgraded" several $clients from Nagios to Thruk+Naemon)

Monthly Report - March

Perl Weekly Challenge, First Week

I am glad that Mohammad Anwar started the Perl Weekly Challenge. Since it seems that the entries will not be published by Mohammad, this gives me the opportunity to finally publish my first post here, about 8 months after having registered.

Week 1, Challenge # 1: Letter Substitutions

Substitute every ‘e’ with upper-case 'E' in the string “Perl Weekly Challenge” and count every occurrence of ‘e’.

For this challenge, I proposed only a Perl 5 solution, in the form of a Perl one-liner:

$ perl -E 'my $c = shift; my $num = $c =~ tr/e/E/; say $c; say "Number of replacements: $num";'  'Perl 6 Weekly Challenge'
PErl 6 WEEkly ChallEngE
Number of replacements: 5

Nothing special about it, except that the tr/// operator returns the number of substitutions it has performed, so there is no need to count separately the 'e'.

"Sherlock Holmes & the Case of the Missing Parsing Solution"

There is a new blog post at my Ocean of Awareness blog: "Sherlock Holmes and the Case of the Missing Parsing Solution" .

How to serve Static HTML file and CGI script in development environment

How to serve Static HTML file and CGI script in development environment.

I write simple implementation with Mojolicious.

morbo serve_cgi.pl

Austin Perl Mongers Hackathon Planning - Part 1

Exciting news from Austin, TX!

The Austin Perl Mongers are launching our very first full Hackathon. It is scheduled for late April, on two weekends, Saturday 20th and 27th. Our goal is to create a Perl class for teenagers. We will achieve this at the Hackathon by upgrading the CloudForFree platform, adding graphics, and a live development feature. The students will be able to see the result of their coding, as they write their code! It can make the learning of programming more accessible to teenagers, and it introduces them to Perl.

The project managers for this Hackathon are yours truly and Bonnie Cope, a programmer and Perl enthusiast. Will 'the Chill' Braswell, creator of the platform, is one of the programming team leads.

You can check out the CloudForFree platform on http://cloudforfree.org

20190328-austin_perl_mongers_christmas_party_big_bennie_bonnie.jpg

Enforcing Simple Standards with One Module

It's fair to say that at our consulting company, we work with many clients who use Perl heavily. The "preamble" of their Perl code is either an ad-hoc mixture of features, or stock boilerplate like this which gets cut-n-pasted all over the place:

use strict;
use warnings;
use v5.24;
use feature "signatures";
no warnings 'experimental::signatures';
use utf8::all;
use Carp;

Both of those approaches are dead wrong. The "ad hoc" pragma list means it's hard to be sure what features are or are not available. The "standard boilerplate" approach means cutting-n-pasting and then hating yourself when you have to change that standard boilerplate.

What to do with doubly-broken UTF-8?

I recently got a few test reports like this:

www.cpantesters.org/cpan/report/49de90f8-4ec9-11e9-98fa-fc611f24ea8f

Although I've put all kinds of stuff in my test file:

[https://metacpan.org/source/BKB/Lingua-JA-Moji-0.56/t/katakana2syllable.t#L9-13]( https://metacpan.org/source/BKB/Lingua-JA-Moji-0.56/t/katakana2syllable.t#L9-13)

the cpan testers doesn't like that. How to deal with this garbage characters?

The solution is this:

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.