The newly-added signature_named_parameters experiment needs adding to perlexperiment.pod, and experimental.pm. Hopefully before 5.43.5 release on Thursday
The experimental dist would be easier to manage if it lived in dist/, but it would also be nice if we had more automated tooling to create real CPAN distribution tarballs out of those directories. Would help for making Module-Corelist updates every month as well.
We await a full write-up of a PPC document following on from the “refalias in signatures” Pre-PPC discussion
In my previous blogpost I briefly discussed the use of Gemini Cli on a Perl dancer application to analyze its codebase. The next step is to generate a product requirement document. Why is this important ? well I had a bad experience with Gemini on another application where I allowed it to roam free "YOLO" mode and it basically started fixing all the problem areas one after another for about an hour or so until my free trial of Google Gemini expired for the day. This resulted into a completely rewritten application that was not able to run due to so many different errors. The cool thing is that I had version control so a good old "git reset --hard Head" cleared up my project and I could start over again.
We discussed the unlimited statement modifier chaining proposal. Both of us thought that unlimited chaining is a bad idea, though we agreed that being able to combine one loop and one conditional would on rare occasions make things slightly nicer. However we also agreed that in terms of conceptual complexity, only either allowing arbitrary chaining or disallowing chaining entirely is justifiable, as opposed to specifying and implementing rules to permit it but only in certain specific cases, especially considering the marginal benefit. So we settled on agreeing with Larry’s original design decision to disallow them.
Get at the usual place...
Elsewhere, I've moved house, into a retirement village.
Yes, folks. I'm 75, much to my horror and astonishment.
It was an exhausting process, but I'll settled in now. And still programming!
And not just the wikis. I have various other projects I can get back to now I've moved.
Why move?
Because I downsized. The price difference gives me a little bit of money in the bank.
In the last few months I have been learning Flutter and Dart and recently I saw a youtube video from our very own Perl Wizard Randal Schwartz ( Vibe-coding with Gemini CLI ) where he is exploring the use of Google Gemini to vibe code Flutter applications. Gemini Cli is a command line tool that gives you the power of Gemini AI right in your command line prompt. In the beginning of Randal's adventure with Gemini he wrote this AI prompt "review the app @youtube_watcher. Tell me the Good, the Bad and the Ugly." and AI delivered a very detailed response on what is and isn't working within the application.
After seeing this very detailed report I decided to do the same on ev-calc-pricing a perl dancer project I worked on and I was amazed to see Gemini work on a perl dancer project. At this point I realize that Gemini is capable of assisting coders in any language/ framework and it can provide insight on software engineering best practices for you application.
We had a small amount of helpful feedback on the named signature parameters PR. Paul wants to merge by the end of the week for the purposes of inviting more feedback, assuming no issues are raised in the meantime.
Every year we “welcome” a new bunch of trainees into our department. Young,
intelligent and enthusiastic, their psyche and physique have yet to be shaped to
accommodate cynical scepticism, efficient laziness, and an integument
thickened by years of abuse into something that offers natural protection
from radiation emanating from the monitors they will stare at all day playing
Solitaire.
One such fellow, let’s call him Nik the Greek, came up to me
with that sickening joie de vivre characteristic of youth, and proceeded
to reveal how eager he was to demonstrate his enormous intellectual
assets. I would have raised an eyebrow, had I the energy to do so. But
been there, done that. I was once his age I suspect, though either I
can’t remember or have developed a block to my memories as an act of
self-preservation.
Binary Golf Grand Prix is an annual small file format competition, currently in it's sixth year. The goal is to make the smallest possible file that fits the criteria of the challenge.
This year's BGGP challenge was to output or display 6. I always wanted to work with actual machine code, so I decided to submit a DOS COM executable. Why? Because the COM format has no headers or other metadata; you can just put some x86 instructions in a file and run it directly.
Having no experience with DOS, I started by looking up a "hello world" example and found https://github.com/susam/hello:
MOV AH, 9
MOV DX, 108
INT 21
RET
DB 'hello, world', D, A, '$'
We touched on the recent discussion about the classification of modules included with the perl distribution. We agreed that the PSC and p5p need to do a better job of tracking which modules have active maintainers and who they are. Something like a dashboard would be useful for this, and we identified as a starting point that it would be good to have an up-to-date overview of dists, their maintainers, and whether they are active. Maintainers.pl probably already covers the list of dists but it would be useful to split the data out into a separate file so it could be used in other scripts, which could also populate records with additional data, outside of what Maintainers.pl needs, for their own purposes. For example a tool for querying PAUSE for the maintainers of dual-life dists and flagging deviations could check a custom field where known deviations (along with a comment) would be recorded, so as to not flag them.
We had a somewhat surface-level discussion about the future of stdio in Perl. Leon has been thinking about this and intends to write a separate mail to p5p about it.
Available from the Wiki Haven.
I have still not had time to update CPAN::MetaCustodian, so it does not yet work correctly with the latest version of Perl.Wiki.html.
At the beginning of the year, we ran a small experiment at work. We hired four annotators and let them rate 900 sentences (the details are not important). To decide whether the inter-annotator agreement was significant, we calculated (among others) Krippendorff’s alpha coefficient.
I’d used Perl for everything else in the project, so I reached for Perl to calculate the alpha, as well. I hadn’t found any module for it on CPAN, so I wrote one: I read the Wikipedia page and implemented the formulas.
The Real Data
The experiment was promising, so we got additional funding. We hired 3 more annotators, and a few months later, another nine. This increased the number of raters to 16. So far, they’ve rated about 200K sentences. Each sentence has been annotated by at least two annotators (usually three).
One day, I decided to calculate the inter-annotator agreement for the new data. To my surprise, the calculation took more than 6 hours.
We finally managed to arrange our first regular meeting between the three of us.
Largely we discussed strategy for the named parameters branch. We agreed to merge soon (so people start playing with it), just staying ready to back it out well before release, in case it proves not to be ready.
In that context, we considered the situation with experiment warnings. We agreed that named parameters should be an additional experiment of its own, though it is an adjunct of another experiment – and we do not yet have established ways of dealing with such a situation. We want to think about how our experiment mechanism should be extended to cover such cases.
Without weighing in to the pros and cons of using a Monorepo approach to your organizations codebase, I am interested in hearing about tools and approaches that have been used with Perl.
For example, I have found that Bazel has Perl support which seem fairly actively. I wonder if there is anything that can integrate with Dist::Zilla? Or any way of managing pulling third party code?
Experiences with CI/CD in the normal Git hosting platforms are also of interest - although it does seem like Github and Gitlab are designed around death-by-repo - and I have seen some features to vary the "actions" behavior based on whats changed. I am however just as interested in if you have had experiences withotherplatforms please chime in!
Fwiw I realize that perhaps Git isn't the best for Monorepos (although you could argue that the Linux Kernel is in a monorepo) and I have no issue with current alternatives and upcoming ones.
Any plugins that can help? For anything mentioned or not.