Information for SPW Attendees

This year's Swiss Perl Workshop in Villars-sur-Ollon overlaps with the historic hill climb, consequently there are some road closures that you need to be aware of if you plan to leave early or the day after the workshop. This isn't a big deal, it just means you will leave the village a different way to that which you arrived. The following flyer details the closures, I have translated the important parts below:

road_closures.jpg

Important bits: The road from Ollon to Villars will be completely closed between 9.30am to 12.30pm and 2pm to 5pm on both Saturday 26th and Sunday 27th August. Therefore the only bus running on those days between 9.30am and 5pm will be the 12.55pm (from Villars to Aigle and vice-versa).

If you wish to get down to the valley you will need to go via Gryon, to Bex. The train from Villars to Bex will not be affected by the road closures, nor will the cantonal road from Villars to Bex. There will be diversion signs in place to show you the way from Villars to Bex.

Any questions then please email Lee.

Log::Any - Now With Structured Logging

The first trial release of Log::Any with mephinet's structured and contextual logging support has been released for feedback!

These features make it easier to log structured data which will then be picked up by log parsers. Adding a single, unblessed hashref as the last argument to a log method will write that data structure as a compact entry at the end of your log string:

use Log::Any '$LOG';
use Log::Any::Adapter 'Stdout';
$LOG->info( "Hello, World", { foo => 'bar' } );

$ perl test.pl
Hello, World {foo => "bar"}

Even better, you can add values to the logging context, which will also add those values to the log string as a compact data structure. Using local will automatically remove those values at the end of the scope.

use Log::Any '$LOG';
use Log::Any::Adapter 'Stdout';
local $LOG->context->{fizz} = "buzz";
$LOG->info( "Hello, World" );

$ perl test.pl
Hello, World {fizz => "buzz"}

And you can combine the two:

SPVM is now 6x faster than Perl 5.26.

I'm delovelping SPVM on GitHub. and I release SPVM on CPAN

SPVM is currently 6x faster than Perl 5.26.

SPVM is not another implementaion of Perl. SPVM is a language and you can call SPVM function from Perl. Installation is very easy. "cpan SPVM" or "cpanm SPVM".

Don't afraid not to run CPAN module. You can use any CPAN modules and use SPVM together.

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

  use SPVM 'MyModule2';

  my $total = SPVM::MyModule2::foo(3, 5);
  print $total . "\n";

Module file

  # lib/SPVM/MyModule1.spvm
  package MyModule1 {
    has x : int;
    has y : int;

    sub sum ($a : int, $b : int) : int {

      my $total = $a + $b;

      return $total;
    }
  }

  # lib/SPVM/MyModule2.spvm
  use MyModule1;
  package MyModule2 {

    sub foo ($a : int, $b : int) : int {

      my $total = ($a * $b) + MyModule1::sum(2, 4);

      return $total;
    }
  }

Perl 5.28 boolean check become fast

Perl 5.28 boolean check become fast.


This branch contains about 50 commits, which collectively optimise various aspects of perl's behaviour when detailing with boolean values or ops that are called in boolean context. various boolean-related optimisations - perl.git

Bencmark is very good!


   36 @  96.55% ..  99.99%
  245 @ 100.00% .. 100.99%
   28 @ 101.00% .. 109.99%
    7 @ 110.00% .. 119.99%
   10 @ 120.00% .. 129.99%
   29 @ 130.00% .. 199.99%
    4 @ 200.00% .. 299.99%
    1 @ 314.29%
so about 10% of tests became marginally slower - usually due to one extra conditional in an op to test for a private BOOL flag or ReANY(); about 70% of tests were almost unaffected, while 20% of tests showed improvement, most with considerable improvement, and a few with spectacular improvement. (The 314% is for an empty @lexical tested in boolean context). various boolean-related optimisations - perl.git

Perl 6 Data::Dump::Tree version 1.5

For those who do not know the module, Data::Dump::Tree renders your data structures in a tree fashion for legibility. https://github.com/nkh/P6-Data-Dump-Tree

It also

  • can display two data structures side by side (DDTR::MultiColumns)

  • can display the difference between two data structures (DDTR::Diff)

  • can generate DHTM output (DDTR::DHTML)

  • can display a folding structure in Curses (DDTR::Folding)

  • can display parts of the data structure Horizontally ( :flat() )

  • can be used to "visit" a data structure and call callbacks you define

  • install Term::ANSIColor and get colored output (highly recommended)

This blog entry is about the the latest changes.

I'll start with dd, the rakudo built-in dumper, which I learner to hate and love. I certainly love it when I am debugging my module and I can't use my own data dumper. I have in this version copied a few of its features which I found better.

This new release would not happen without the endlessly caring people on #perl6.

Snatched from dd

Perl 5 Porters Mailing List Summary: July 24th-30th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.

Enjoy!

Challenge: At least one PR a day in a month

Since I started my journey of PullRequest, I always wanted to do at least one PR a day every month. I found it very tough and have only managed few times. To be precise 3 times in the year 2015 (Oct: 45, Nov: 31, Dec: 60). However the following year 2016 wasn't as good as expected, unfortunately. I could only successfully managed to do that in one month (Dec: 77). This year 2017, I am charged up again to do at least 6 months, if not at least beat my year 2015 target of 3 months. So far I could only do 2 months (Jan: 63, Jul: 32). I still have plenty of time in my hand and hopeful to get another 4 months, in the remaining months of the year.

At times, I feel like starting with one PR a week challenge and then move up slowly.
Any suggestions/ideas?

The Perl Conference in Amsterdam

I'm delighted to be attending The Perl Conference in Amsterdam in just over a week's time.

We'll be kicking off the event with two days of public training courses. I'll be offering a full-day class on Perl 6's awesome regexes and grammars on Monday August 7, and then my popular Presentation Aikido class on Tuesday August 8.

In addition to my own two events, brian d foy and Jeff Goff are also offering some great classes in Perl 5 or Perl 6...so you're guaranteed some first-rate training, whichever course you choose. All the classes are just €150 per day (including lunch and recaffeination breaks) and you can sign up for any of them on the conference's new training webpage.

berrybrew, the Perlbrew for Windows, updated to v1.15

I've released berrybrew version 1.15.

All of the credit for this update goes to PETERCJ who went far above and beyond with this PR. It's a pleasure to have him contributing to this (or any) project.

The significant change here is the addition of the use command. I feel that this addition adds tremendous value to the software, and makes it much easier to use.

This allows you to temporarily switch to one of your other installed Perl instances either in the same command window or new ones without switching your currently switched to one. Here are some examples:

Temporarily use a different installed version, in the same window. Typing exit will return you to your previous environment within the same window:

c:\>berrybrew use 5.10.1_32
Perl-5.10.1_32
==============
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.


<berrybrew use 5.10.1_32>: run "exit" leave this environment
c:\>

Calling exit returns you to your previous environment within the same CLI window.

CPAN Day is 16th August

CPAN Day marks the date of the first recorded upload to CPAN: Andreas König uploaded Symdump 1.20 (it's since been renamed Devel::Symdump).

On CPAN Day this year, you could do some small thing to help celebrate. This could be as simple as emailing the author of a module that you regularly use, and say "thank you". It may not sound like much, but it's great to be on the receiving end.

There are lots of other things you could do to help someone else's module. For a previous CPAN Day I posted a list of ideas.

Or if you've got your own distributions on CPAN, you could fix a bug, or merge an outstanding pull request *cough*. This year I plan to merge at least one PR, and do at least one release to CPAN. I'll submit a PR too.

What will you do?

Perl 6 Training August 8th at TPC::Amsterdam

The official training schedule is still being drawn up, but I'm pleased to offer a full day of Perl 6 training at the b.amsterdam venue the day before TPC::EU . Please feel free to join me in a day of hands-on interactive learning about Perl 6. If you were at the Perl 6 training seminar last year, don't worry, I have new content and insight to bring to the table, and if you weren't, just bring your curiosity and a laptop loaded with Rakudo Star and we'll sit down and start learning.

Maybe the King is facing revolt

Python is often touted as the "winner" among scripting languages, but you couldn't tell from this post:

https://developers.slashdot.org/story/17/07/22/2250237/ieee-spectrum-declares-python-the-1-programming-language

Perl 5 Porters Mailing List Summary: July 17th-23rd

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.

Enjoy!

Reading/writing Arduino pins over I2C with Perl

Today, loosely inspired by this thread over on Perlmonks, I'm going to show how to set up an Arduino (Uno in this test case) with a pseudo-register that allows toggling one if its digital pins on and off, and another pseudo-register to read an analog pin that the digital pin is connected to, over I2C. Because it's digital to analog, the only possible values of the analog read will be 0 (off) or 1023 (full on, ie. 5v). This is an exceptionally basic example, but with some thought, one can imagine the possibilities (read/write EEPROM, set PWM etc etc).

1000th consecutive days releasing to CPAN

Today, Sunday 23rd July 2017, is the 1000th consecutive days of releasing to CPAN. It means a lot to me personally and certainly not an easy task. I have been through many ups and downs in this entire journey. I would say many ups than downs. What inspired to me start the journey? It was one of the blog by Neil Bowers that got me started.

Then came a time when Barbie decided to stop after completing 370th consecutive releases to CPAN. He even wrote a blog about it and mentioned my name in the blog. He even gave few advises how to survive.

PPIx-Regexp Perl Version Functionality

The PPIx-Regexp package provides a PPI-like parse of Perl regular expressions. Part of its functionality includes reporting on the versions of Perl under which a given regular expression or its elements are valid. Up to this point the version fumctionality has been fairly simple: method perl_version_introduced() returns the version of Perl that introduced the element, and perl_version_removed() returns the version under which it was removed, or undef if the element is valid in the most-recent Perl.

Unfortunately reality is not so constrained, and Perl 5.27.1 contains the first instance known to me of regular expression functionality which was removed and then reinstated: the un-escaped literal left curly bracket following another literal. Yes, this is just a development release, but the explanation given in perl5271delta (use of the construct in GNU Autoconf) makes it sound to me like the reinstatement needs to be taken seriously. Here is how I plan to deal with all such occurrances:

Swiss Perl Workshop 2017 - Final Call For Papers

It's just over a month until this year's Swiss Perl Workshop in Villars-sur-Ollon. We already have Damian speaking as well as a few talks submit on topics such as: starting afresh with Mojolicious up to building an API using Swagger, profiling with Devel::NYTProf and memory leak tracing, high precision math in Perl 6, and using perl and Java together; but of course we would like more!

If you would like to attend this year's Swiss Perl Workshop and give a talk then please register and submit a talk. Your talk can be short (5 or 10 minutes) or longer (20, 40, or even 120 minutes) and we welcome talks on any topic, not just perl.

Many thanks to our sponsors, who have enabled this event to take place:

GivenGain | Oetiker + Partner AG | Perl Careers
Perl Services | booking.com | Open Systems AG

Strawberry Perl 5.24.2.1 released

Strawberry Perl 5.24.2.1 is available at http://strawberryperl.com

More details in Release Notes:
http://strawberryperl.com/release-notes/5.24.2.1-64bit.html
http://strawberryperl.com/release-notes/5.24.2.1-32bit.html

I would like to thank our sponsor Enlightened Perl Organisation for resources provided to our project.

What is a "Senior Developer"?

When a company hires All Around the World to develop new systems or work on existing ones, they're sometimes surprised to find out that, with few exceptions, we only hire senior engineers. We're not a "body shop." We're the experts you hire when you need things to work and you've discovered that the $100 a day freelancer wasn't such a bargain after all (true story).

So when a self-described intermediate developer asked me what I meant by "Senior Developer", and does it just meant "time on duty", I realized that what we're looking for is different from what other companies look for. We have high standards and a difficult hiring process, but it's worth it.

What follows is my (edited) response to that developer.

Introduce Perl tutorial site which write by google engineer

About a month ago, I got an e-mail. "Please introduce Perl tutorial site which is written by google engineer spent over 150 hours"

PERL Tutorial for Beginners - Complete Guide

A Silicon Valley engineer seems to have rarely introduced Perl, but recently it tells us that we have used Perl at the Google APP engine, and Amazon scalable MXNet cloud support Perl library AI::MXNet officially.

And about a month ago, I hear a veteran google engineer is writing Perl tutorial over 150 hours.

I'm glad for Silicon Valley engineer to be interested in Perl.

This site start with Perl download and installation, then there are basic topics.

PERL Tutorial for Beginners - Complete Guide

Download & Install Perl - Windows, Mac & Linux
Perl Variable
Perl Array
Perl Hashes
Perl Conditional Statements - If, If Else, Else if, Unless, Nested if
Perl Loops - Control Structures
Perl Operator
Perl Special Variables
Perl Regular Expression
Perl File I/O
Perl Subroutine
Perl Format- Getting perfect Output
Perl Coding Standards
Perl Error Handling
Perl Socket programming
Perl Modules and Packages

This is one way to learn Perl in English. I think that it is convenient for people who are studying Perl in English-speaking countries.

I asked Google engineers to see GitPrep and SPVM.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.