Hi All! Given the number of talks submitted to this year's London Perl & Raku Workshop we have decided to reserve a third room in the venue. This will give us a bit more room on the schedule for talks, which is good as the other two rooms are now 90% full.
However, we would also like to use this third room for something else. Its capacity is relatively low, 15 people including the person presenting, so we feel it might be suitable for use as a breakout room / mini hackathon(s) / birds of a feather; and we will probably reserve two large slots for this. If you have an idea of something you'd like to use the room for then please get in touch with us.
Another way we can make more space for talks is to opt for lunch at the venue, this will free up space for three more talks. To do that we need a couple more sponsors so if you would like to help with that then please have a look at the options here: https://act.yapc.eu/lpw2024/sponsoring.html
The London Perl and Raku Workshop will take place on 26th Oct 2024. Thanks to this year's sponsors, without whom LPW would not happen:
Just Aristotle and Philippe this time (Graham chipped in on IRC):
we discussed the apostrophe situation: we will watch 5.41.3 break CPAN, and then evaluate the actual fallout. We like the idea of guarding this with a feature (which might need to be split in two, for the string interpolation case)
we had a long discussion about backwards compatibility and use VERSION.
Should "did you use VERSION?" become the new "did you use strict and warnings?"
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on September 15, 2024, at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 2: Order Game
You are given an array of integers, @ints, whose length is a power of 2.
Write a script to play the order game (min and max) and return the last element.
The Dancer Core Team is happy to announce that Dancer2 1.1.1 is on its way to CPAN. This is a maintenance release that deals with the following issues:
[ BUG FIXES ]
* GH #1712: Fix use of send_as in templates (Andy Beverley)
[ DOCUMENTATION ]
* PR #1706: Document missing logging hooks and log format option;
fix typo in logging test (Jason A. Crome)
Yep, that's right - the second half dozen talks have been accepted for this year's London Perl and Raku Workshop. This puts our schedule at approximately 80% full, so if you are thinking about talking at the workshop then submit your proposal now!
The CFP will be closed at the end of September to give speakers sufficient time to finish their presentations and to allow the schedule to be created. We encourage all attendees to mark talks they are interested in as that will inform some of the schedule choices.
If you aren't thinking about talking then have a think about what you've been doing in the Perl and/or Raku space the last five years, or even just the general IT and development space. Perhaps there's something interesting you can talk about? If you don't feel it's a full fat talk then submit a lightning talk instead.
The London Perl and Raku Workshop will take place on 26th Oct 2024. Thanks to this year's sponsors, without whom LPW would not happen:
Discussed tracking perl authorized releasers updates and storing historical data
Dual-Life modules need some cleanup to get a more normal release process that can be done more regularly. Cleanup has been done on Storable.
Time::HiRes by default doesn’t seem terrible, if possible
X509 in core could make sense as part of a more complete interface to OpenSSL
Discussion about how it would be possible to have support for Markdown or other new Pod extensions in a more backwards compatible way. Possibly a way to define alternate formats for =begin/=end sections.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on July 21, 2024, at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 2: Reverse Word
You are given a word, $word and a character, $char.
Write a script to replace the substring up to and including $char with its characters sorted alphabetically. If the $char doesn’t exist, then DON'T do anything.
Perl v5.40 introduced native true and false keywords. Unfortunately not all CPAN modules are ready to use them. One of those not yet ready is Mojo::Pg.
Normally you'd want to pass booleans to your queries as just 1's and 0's. However, since Mojo::JSON's true & false stringify to 1 and 0, my 5.38-using codebase is full of Mojo::Pg queries with Mojo::JSON's true and false as arguments.
This is a problem if I want to upgrade the perl interpreter of that project to Perl v5.40, because if I write "use v5.40;" in the file that contains those boolean keywords, Perl's builtin booleans will be used instead, which don't stringify to 1 and 0, but to 1 and the empty string, which can't be used by DBD::Pg in boolean fields and makes DBD::Pg throw an exception.
The solution I found was to subclass Mojo::Pg::Database, and wrap the query method, so that if Perl's builtin booleans are found, they are replaced in the query with native Pg booleans.
The source of the module and a lot more information can be found in my blogpost, here.
We merged HTTP-Tiny#6, and then discussed a number of topics:
some improvements on the process for releasing blead-upstream dual-life modules are needed
the instructions for releasing a new Perl are difficult to follow and partly redundant, the process takes longer than it should, and more of it could be automated
the pumpkin permission list has grown over time, and probably needs to be trimmed
more talk about Markdown documentation
thoughts on how to strike a better balance with the verbosity/brevity of meeting minutes
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on September 15, 2024, at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: Self Spammer
Write a program which outputs one word of its own script / source code at random. A word is anything between whitespace, including symbols.
Example 1
If the source code contains a line such as: 'open my $fh, "<", "ch-1.pl" or die;'
then the program would output each of the words { open, my, $fh,, "<",, "ch-1.pl", or, die; }
(along with other words in the source) with some positive probability.
Example 2
Technically 'print(" hello ");' is *not* an example program, because it does not
assign positive probability to the other two words in the script.
It will never display print(" or ");
I have not been able to figure out how to run an async thread in the background while using a REPL like reply. The moment I run the main loop, it takes over the input from the REPL. Here's what a typical failed REPL session might look like.
Well, after taking a very long break inspired (to understate it a bit) by the pandemic, I’m back to attending in-person Perl events with my seventh YAPC. Or, The Perl Conference, I suppose, but it still feels like YAPC to me. As per usual, here are some reflections.
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on September 8, 2024, at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 2: Making Change
Compute the number of ways to make change for given amount in cents. By using the coins e.g. Penny, Nickel, Dime, Quarter and Half-dollar, in how many distinct ways can the total value equal to the given amount? Order of coin selection does not matter.
A penny (P) is equal to 1 cent.
A nickel (N) is equal to 5 cents.
A dime (D) is equal to 10 cents.
A quarter (Q) is equal to 25 cents.
A half-dollar (HD) is equal to 50 cents.
I remember when one one of my grandchildren helpfully decided reorganise a bookshelf whilst by himself. Upon being discovered, sitting in front of an empty shelf with books strewn all around him, his instinctive reaction made me feel proud to be his grandpa. He looked up and said, “Oh dear! Oh dear! what happened?”, as if this calamity had occurred spontaneously, astonishing him as much as the angry parent who was going to have to tidy it all up. It is hard to hide amusement when you watch your kids have to deal with their kids.
Advanced Disaster Management Strategy for Grandchildren and Programmers
Spoiler Alert: This weekly challenge deadline is due in a few days from now (on September 8, 2024, at 23:59). This blog post provides some solutions to this challenge. Please don’t read on if you intend to complete the challenge on your own.
Task 1: No Connection
You are given a list of routes, @routes.
Write a script to find the destination with no further outgoing connection.
Example 1
Input: @routes = (["B","C"], ["D","B"], ["C","A"])
Output: "A"
"D" -> "B" -> "C" -> "A".
"B" -> "C" -> "A".
"C" -> "A".
"A".
Chapter 3 of Higher Order Perl describes various approaches to memoization of an expensive function: private cache and the Memoize module. The book was written in 2005 (Perl was at version 5.8 back then) , so it does not include another way for function caching that is now available : caching through state variables (introduced in Perl 5.10). The Fibonacci example considered in HOP also requires the ability to initialize state hash variables (available since Perl 5.28). The code below contrasts the implementation with a state variable v.s. the memoize module: