Sorting Out Baby Moose

Its sort day here in the Moose-Pen.

Well I have been on a role since I started on 'Group By' so I figure I might as well get the last of the base SQL code snippets in place. The last one is 'sort' or in SQL 'ORDER BY' and why change something that isn't broke here is a new test case ' 60_order_by.t ' and here it the hash I am going to start with;

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!

Gather Up Even More Moose

It another gather day here in the Moose-Pen.

Now that I did the re-factoring for gather it is time to move on the Driver::DBI and do to code to generate the SQL. Of course I always start with a test case and this time it is a new one 50_having.t. It is much the same as the other test cases so no need to repeat that here, the only important bit is this hash;

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:

Gather Up Baby Moose

Its gather in the dream day here in the Moose-pen

Well going to skip a post on creating a gaggle of new tests today and instead do some core coding in Driver::DBI and Database::Accessor. Now believe it or not I had a dream last night that something was wrong in the way I set the architecture of Grathers and Filters, GROUP BY and , HAVING in SQL, in Database::Accessor. Boy this does sound corny!. So today I started to look at that part of my code.

In the original Data::Accessor a 'GROUP BY' and 'HAVING' looked like this

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

Baby Moose Link

Its link day here in the Moose-Pen

Well seeing as my elements/fields and conditions/Where are working quite well I think it is time to move on to the next attribute in Accessor.pm Links.

In SQL joins are the same as Database::Accessor Links so given this SQL;

SELECT people.first_name, people.last_name, people.id, address.street FROM people LEFT JOIN address ON people.id = address.user_id WHERE people.first_name = ?
the

LEFT JOIN address ON people.id = address.user_id
is represented by;

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.

Baby Moose Where?

Its where day in the Moos-Pen

Today I am going to expand on the '20_where_basic.t' test case going from a simple one level Element to Param 'where clause' such as

SELECT people.first_name, people.last_name, people.user_id FROM people WHERE ( people.first_name = ? AND people.last_name = ?
to the much more complex Function, Expression, nested and mixed clauses that I was using in the last few posts. First I decided to re-factor my tests from the start and using the 'element_sql_ok' sub from this post I re-factored it to this sub

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.

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.