List of new CPAN distributions – Oct 2020

dist author version abstract
Acme-CPAN-Testers-DevelCheckOS PERLANCAR 0.001 Show Devel::CheckOS results on CPANTesters machine
Acme-CPANModules-PERLANCAR-InfoFromCPANTesters PERLANCAR 0.001 Distributions that gather information from CPANTesters
Alien-Adaptagrams ZMUGHAL 0.001 Alien package for the Adaptagrams adaptive diagram library
Alien-Graphene ZMUGHAL 0.001 Alien package for the Graphene graphics math library
Alien-Kiwisolver ZMUGHAL 0.001 Alien package for the Kiwi C++ implementation of the Cassowary constraint solving algorithm
Alien-Plotly-Kaleido SLOYD 0.001 Finds or installs plotly kaleido
Anonymous-Object LNATION 0.01 Generate Anonymous Objects
App-Dazz WANGQ 0.1.0 Daligner-based UniTig utils
App-DiffXlsText PERLANCAR 0.001 Diff the text of two Office spreadsheets (.ods, .xls, .xlsx) as two directories of CSV files
App-FilenameUtils PERLANCAR 0.001 CLIs for Filename::*
App-PPIUtils PERLANCAR 0.001 Command-line utilities related to PPI
App-PasswordWordListUtils PERLANCAR 0.001 Command-line utilities related to checking string against password wordlists
App-PlatformMatchUtils PERLANCAR 0.001 Utilities related to Devel::Platform::Match
App-SimpleBackuper NOVOZHILV 0.1 Just simple backuper app with incremental compressed encrypted backups stored on remote ssh server
App-ThisDist PERLANCAR 0.001 This CPAN {distribution,module,author,…}
App-Tk-Deparse SZABGAB 0.01 Tk based GUI to experiment with B::Deparse
App-URIUtils PERLANCAR 0.001 Utilities related to URI/URL
App-lcpan-CmdBundle-changes PERLANCAR 0.001 lcpan subcommands related to Changes file
App-sersh JKUTEJ 0.01 serial port shell
App-swaks JETM 20190914.0 Swiss Army Knife for SMTP testing
App-tkispell ASB 0.20 Perl/Tk user interface for ispell.
App-wordstat PERLANCAR 0.001 Return word statistics of a text
Async-Microservice JKUTEJ 0.01 Async HTTP Microservice Moose Role
Bio-MUST-Apps-Physeter DBAURAIN 0.202960 Dummy internal class for physeter tool
CAD-Mesh3D PETERCJ 0.002 Create and Manipulate 3D Vertexes and Meshes and output for 3D printing
CPAN-Info-FromRepoName PERLANCAR 0.001 Extract/guess information from a repo name
CPAN-Meta-X PERLANCAR 0.001 List of custom (x_*) keys in CPAN distribution metadata being used in the wild
Caller-Hide SNEZ v0.0.1 hide packages from stack traces
Catalyst-Plugin-Digress ARISTOTLE 1.000 A cleaner, simpler, action-only $c->forward
Catalyst-View-Template ARISTOTLE 1.000 Template Toolkit meets Catalyst
Chart-Kaleido SLOYD 0.001 Base class for Chart::Kaleido
Data-Dmp-Prune PERLANCAR 0.240.0 Dump Perl data structures as Perl code, prune some branches
Data-RingBuffer ZHMYLOVE 0.01 A simple ring buffer data structure
Data-RingBuffer-Time ZHMYLOVE 0.01 Ring buffer data structure to keep time-series data
Date-Format-ISO8601 PERLANCAR 0.005 Format date (Unix timestamp/epoch) as ISO8601 date/time string
Devel-Platform-Match PERLANCAR 0.001 Match platform information with platform specification
Device-Chip-AD9833 PEVANS 0.01 chip driver for AD9833
Device-Chip-MAX31855 SACAVILIA 0.001 chip driver for MAX31855 thermocouple amplifier
Filename-Executable PERLANCAR 0.001 Check whether filename indicates being an executable program/script
Github-Email MOMOZOR 1.1.0 Search and print particular Github user emails.
Google-Chat-WebHooks IGIBBS 0.01 Send notifications to Google Chat Rooms
Gtk3-ImageView RATCLIFFE 1 Gtk3 port of the Gtk2::ImageView image viewer widget
Hash-DotPath GRAVATTJ 0.001 Package for manipulating hashes via dot path notation.
Intertangle-API-Glib ZMUGHAL 0.001 Helper for using Glib
Intertangle-API-Gtk3 ZMUGHAL 0.005 Provides helpers for dealing with Gtk3 code
Intertangle-API-Kiwisolver ZMUGHAL 0.001 API for Kiwisolver constraint solver
Intertangle-Jacquard ZMUGHAL 0.001 A high-level structured graphics library
Intertangle-Punchcard ZMUGHAL 0.001 A constraint modelling meta-system
Intertangle-Taffeta ZMUGHAL 0.001 Low-level graphics layer
Intertangle-Yarn ZMUGHAL 0.001 Geometry primitives for graphics
JSON-Conditional LNATION 0.01 The great new JSON::Conditional!
JSON-Encode-TableData PERLANCAR 0.001 Encode table data to JSON (put each row on its own line)
JSON-Lines LNATION 0.01 The great new JSON::Lines!
Log-JSON-Lines LNATION 0.01 Log in JSONLines format
Log-ger-UseDataDmpPrune PERLANCAR 0.001 Use Data::Dmp::Prune to dump data structures
Lyrics-Fetcher-Genius BIGPRESH 0.05 Get song lyrics from http://www.genius.com
MIDI-Chord-Guitar GENE 0.0100 MIDI pitches for guitar chord voicings
Mac-OSA-Notification-Tiny LNATION 0.01 native mac notifications
Mail-SSLSigCheck BPSCHUCK 0.00 The great new Mail::SSLSigCheck!
Math-BSpline-Curve LGEHLEN 0.001 B-spline curves
Mir-FileHandler GRUBERT 0.03 An Mir module to handle files and folders…
Mojolicious-Plugin-EmailMailer LDIDRY 0.02 Mojolicious Plugin to send mail through Email::Mailer.
Perinci-CmdLine-Base-Patch-DumpConfigAfterRun PERLANCAR 0.002 (DEPRECATED) Patch Perinci::CmdLine::Base's run() to dump config after run
Plack-App-Prerender RRWO v0.1.0 a simple prerendering proxy for Plack
Pod-Definitions WLINDLEY 0.01 extract main sections and contained definitions from Pod
Regexp-Pattern-Filename-Ebook PERLANCAR 0.001 Ebook filename
Regexp-Pattern-Float PERLANCAR 0.001 Regexp patterns related to floating (decimal) numbers
Regexp-Pattern-Int PERLANCAR 0.001 Regexp patterns related to integers
Renard-API-MuPDF-mutool ZMUGHAL 0.005 Retrieve PDF image and text data via MuPDF's mutool
Renard-Block-Format-Cairo ZMUGHAL 0.005 A document format for Cairo surfaces
Renard-Block-Format-PDF ZMUGHAL 0.005 Provides a Document and Page for PDF files.
Renard-Block-NLP ZMUGHAL 0.001 Natural language processing for English
Sah-Schemas-Math PERLANCAR 0.001 Math-related Sah schemas
Sah-Schemas-WordList PERLANCAR 0.001 Sah schemas related to WordList
ScriptX_Util PERLANCAR 0.001 Utilities for ScriptX
Smaz LNATION 0.01 compression for very small strings!
Software-Catalog-SW-kdenlive PERLANCAR 0.001 KDEnlive
String-Mask LNATION 0.01 The great new String::Mask!
Struct-Conditional LNATION 0.01 A Conditional language within a perl struct.
Sub-Operable TOBYINK 0.001 apply Perl built-in operators to coderefs
Sub-SymMethod TOBYINK 0.001 methods that act a little like BUILD and DEMOLISH
Task-ModernPerlBook-4e CHROMATIC 1.00 Install CPAN modules for the Modern Perl book, 4e
Term-ProgressSpinner LNATION 0.01 Terminal Progress bars!
Text-ANSI-Printf UTASHIRO 1.01 printf function for string with ANSI sequence
Text-Indent-Tiny SIBERIAN v0.1.0 tiny and flexible indentation across modules
Tickit-Widget-Entry-Plugin-History PEVANS 0.01 add readline-like history to a Tickit::Widget::Entry
Twitter-Text UTGWKK 0.01 Perl implementation of the twitter-text parsing library
URI-Signature-Tiny ARISTOTLE 1.000 Mint and verify server-signed URIs
VAPID LNATION 0.01 Voluntary Application Server Identification
WWW-WTF CHA 1.0
WordList-FR-ODS3 PERLANCAR 0.001 ODS3 wordlist
WordList-ID-Animal-PERLANCAR PERLANCAR 0.001 List of animals in Indonesian
WordList-ID-Fruit-PERLANCAR PERLANCAR 0.001 List of fruit names in Indonesian
WordList-Password-10Million-Top100000 PERLANCAR 0.001 Top 100,000 passwords from 10_million_password_list
WordList-Password-10Million-Top1000000 PERLANCAR 0.001 Top 1,000,000 passwords from 10_million_password_list
WordList-Password-RockYou PERLANCAR 0.001 RockYou password wordlist (~14.3mil passwords)
WordList-Password-RockYou-BloomOnly PERLANCAR 0.001 RockYou password wordlist (~14.3mil passwords) (bloom-only edition)
XS-libunievent SYBER v1.0.0 unievent C++ library for XS.
YAML-Conditional LNATION 0.01 The great new YAML::Conditional!
YAML-Parser INGY 0.0.1 Generated Reference Parser for YAML 1.2
exact-lib GRYPHON 1.01 Compile-time @INC manipulation extension for exact
exact-me GRYPHON 1.01 Original program path locations extension for exact
usw WORTHMINE 0.01 use utf8; use strict; use warnings; in one line.

Stats

Number of new CPAN distributions this period: 103

Number of authors releasing new CPAN distributions this period: 39

Authors by number of new CPAN distributions this period:

No Author Distributions
1 PERLANCAR 34
2 ZMUGHAL 14
3 LNATION 11
4 ARISTOTLE 3
5 GRYPHON 2
6 JKUTEJ 2
7 PEVANS 2
8 TOBYINK 2
9 SLOYD 2
10 ZHMYLOVE 2
11 BPSCHUCK 1
12 WANGQ 1
13 GRUBERT 1
14 RATCLIFFE 1
15 WORTHMINE 1
16 RRWO 1
17 UTGWKK 1
18 LDIDRY 1
19 NOVOZHILV 1
20 JETM 1
21 BIGPRESH 1
22 SZABGAB 1
23 MOMOZOR 1
24 SACAVILIA 1
25 DBAURAIN 1
26 UTASHIRO 1
27 PETERCJ 1
28 CHA 1
29 GRAVATTJ 1
30 SYBER 1
31 ASB 1
32 GENE 1
33 WLINDLEY 1
34 LGEHLEN 1
35 SNEZ 1
36 CHROMATIC 1
37 IGIBBS 1
38 SIBERIAN 1
39 INGY 1

Org stuffs: 001: Moving/removing done todo items

About this series: A collection of short blog posts related to manipulating Org documents using Perl. This is the first article. See the whole series.

A bit of history. I started using org-mode in 2011. Emacs I had been using much earlier, but as also happened with many others, org-mode really clinched the deal. Slowly but sure, I migrated my notes, and later on, my todo list, into this format. Also in that year I started the Org::Parser project. It’s not perfect, and at one point educated_foo said it was pointless because just like only perl can parse Perl, only emacs’ org-mode can truly parse Org. However, I manage to do some useful tricks with the module. (BTW, I missed the guy.)

Being a heavily procrastinating and utterly lazy person, with lots of ideas and abandoned projects, my todo file grew to thousands of items (last count, 4600+ undone todo items and 1900+ done dones).

I currently organize my todo.org like the following: there are hierarchical categories which I write strictly as level-1 headings, with subcategories written inline in the heading using “cat > subcat > subsubcat” notation. I keep these level-1 headings sorted. Example:

* 00unorganized [0/0]
* finance [0/0]
* health [0/0]
* leisure > vacation [0/0]
* pet [0/0]
* person > kid 1 > education [0/0]
* person > kid 1 > health [0/0]
* person > kid 2 > health [0/0]
* person > kid 2 > health [0/0]
* person > kids > education [0/0]
* person > kids > health [0/0]
* person > mom > health [0/0]
* proj > blog > blog title 1 [0/0]
* proj > blog > blog title 2 [0/0]
* proj > book > working title 1 [0/0]
* proj > book > working title 2 [0/0]
* proj > perl [0/0]
* proj > perl > ansitable [0/0]
* proj > perl > debian [0/0]
* proj > perl > lcpan [0/0]
* proj > perl > perinci [0/0]
* proj > perl > wordlist [0/0]
* reading > books to read [0/0]
* watching > movies to watch [0/0]
* watching > tv series to watch [0/0]

Actual todo items are always written as level-2 headings under one of these level-1 categories. This way, I always know that todo items are at level-2, which makes some things easier to find and manipulate. For example:

* proj > perl > lcpan [0/0]
** IDEA [2020-10-04 Sun] lcpan: subcommand to star/favorite modules/dists/authors
** IDEA [2020-10-04 Sun] lcpan: subcommand to show whether our favorite modules/dists/authors have a release in the past week/month/etc
** WISHLIST [2020-10-04 Sun] lcpan: subcommand to retrieve number of ++ from metacpan
** IDEA [2020-02-24 Mon] lcpan: subcommand to check circular dependency
** TODO [2020-05-10 Sun] lcpan: replace Archive::Tar with Archive::Tar::Wrapper

If you’re wondering about the timestamps, my habit is to put a creation date at the beginning of each headline’s title. I myself feel it’s rather unclean and have tried to put “logs” inside the entries, but it’s nice being able to quickly see how old a todo item is, so I’ve kept the habit alive.

The actual “proj > perl” category itself is quite large (currently 3000+), as I put todo items for various smaller projects there and only create a subcategory for a few notable projects.

Over time, I collect hundreds of done todo items in various categories, including in this large “proj > perl” category. I want to remove the done items, but archive it in other file (done.org), under the same category headlines.

Emacs offers some archiving functions for this, and I’m sure with some elisp code it can be instructed to do the above, but with my very limited eslip-fu I shuddered at how much time I have to spend to produce such code. Thus, Org::Parser to the rescue. The result is move-done-todos. It’s not as concise as I like it to be, because the Org::Parser’s API still stinks and lacking when it comes to building node objects or doing some basic manipulation. But at least it works.

To use it:

% move-done-todos todo.org done.org

By default, the script operates in dry-run (simulation) mode, for safety. If you are sure with the results, you add the --no-dry-run option:

% move-done-todos todo.org done.org --no-dry-run

The nice thing about this script is that it can auto-create the categories in done.org, so moving is only a single command-line invocation process. I do strive to make everything in the world a single command-line invocation process.

If you want to remove the done todo items from your todo file, which you might prefer because the done todo items are already recorded in the revision history of your repository anyway, you can omit the done filename:

% move-done-todos todo.org --no-dry-run

There are things that I want the script to be able to do, but not yet, like updating the counter cookies. That, for now, is currently still noted as an undone item in my todo.org.

List of new CPAN distributions – Sep 2020

dist author version abstract
Acme-ZydecoTesting-App1 TOBYINK 0.001 test packaging a Zydeco app
Alien-Build-Plugin-PkgConfig-PPWrapper SLAFFAN 0.01 Alien::Build plugin to wrap the pure perl pkg-config script under windows
App-CekBpom PERLANCAR 0.001 Check BPOM products via the command-line (CLI interface for cekbpom.pom.go.id)
App-PerlFuzzyTokenFinder UTGWKK 0.01 It's new $module
App-PerlTidy-Tk SZABGAB 0.01 Tk based GUI to experiment with PerlTidy configuration options
App-Regather ZEUS v0.80.02 regather – LDAP syncrepl consumer script to perform actions desired on syncrepl event
App-Reorder-TSV IANSEALY 0.1.0 Reorder columns of TSV file by template
App-findeps WORTHMINE 0.01 the Module to find dependencies for files you've selected
App-mojopaste-Backend-Mongo SKLUKIN 0.02 backen for App::mojopaste
App-perlmv-scriptlet-to_random PERLANCAR 0.001 Rename to random characters
App-perlmv-scriptlet-to_uuid PERLANCAR 0.001 Rename to UUID
Art-World SMONFF 0.07 An Art World simulator game 🎨
Bencher-Scenarios-Z PERLANCAR 0.001 Scenarios for benchmarking Z
CLI-Meta-YoutubeDl PERLANCAR 0.001 Metadata for youtube-dl CLI
Container-Buildah IKLUFT 0.2.0 wrapper around containers/buildah tool for multi-stage builds of OCI/Docker-compatible Linux containers
Data-Org-Template MICHAEL 0.01 template engine that plays well with iterators
Data-Tree-Describe DAEMON 0.003 Create annotated versions of complex data trees
English-Script GRYPHON 1.01 Parse English subset and convert to data or code
FFI-Platypus-Declare PLICEASE 1.33 (discouraged) Declarative interface to FFI::Platypus
Form-Tiny BRTASTIC 1.00 Input validator implementation centered around Type::Tiny
Geo-Coder-Abbreviations NHORNE 0.01 Quick and Dirty Interface to https://github.com/mapbox/geocoder-abbreviations
GraphViz2-DBI ETJ 2.49 Use GraphViz2 to visualize a database schema
GraphViz2-Data-Grapher ETJ 2.49 Use GraphViz2 to visualize Perl data structures
GraphViz2-Parse-ISA ETJ 2.49 Use GraphViz2 to visualize Perl class hierarchies
GraphViz2-Parse-RecDescent ETJ 2.49 Use GraphViz2 to visualize a Parse::RecDescent grammar
GraphViz2-Parse-XML ETJ 2.49 Use GraphViz2 to visualize a database schema
Hades-Macro-YAML LNATION 0.01 Hades macro helpers for YAML
Hash-Digger JULIODCS v0.0.1 Access nested hash structures without vivification
Hyperscan MSIKORA 0.03 Perl bindings to the Intel hyperscan regular expression library
Iterator-Records MICHAEL 0.01 a simple iterator for arrayref record sources
JSON-Immutable-XS ADDICT v0.1.0
Markdown-Table PERLSRVDE 0.01 Create and parse tables in Markdown
Math-BSpline-Basis LGEHLEN 0.001 B-spline basis functions
Math-Image-CalcResized PERLANCAR 0.001 Calculate resized dimensions of image/video
Math-Matrix-Banded LGEHLEN 0.004 non-zero entries confined to a diagonal band
Module-List-More PERLANCAR 0.004006 Module::List, with more options
Mojo-InfluxDB GNZL 0.1 Super simple InfluxDB async cappable client with a nice interface
Mojolicious-Plugin-Gallery SKLUKIN 0.01 Blah blah blah
Net-IANA-TLD WESLEY 0.01 IANA TLDs database
Net-Z3950-DBIServer MIRK 1.05 Gateway between Z39.50 and the RDBMS of your choice
Net-Z3950-FOLIO MIRK 1.0 Z39.50 server for FOLIO bibliographic data
OpenBSD-KvmFiles DOHNUTS 0.02 OpenBSD kvm_getfiles.
PINE64-MCP23008 CREDO 0.9 Perl interface to the MCP23008 GPIO extender. Can be used on any single board computer that has I2C capabilities.
Parallel-ForkManager-Segmented-Base SHLOMIF 0.2.0 base class for Parallel::ForkManager::Segmented
Parallel-Map-Segmented SHLOMIF 0.2.0 use Parallel::Map on batches / segments of items.
Pepper ECHERNOF 1.0 Quick-start kit for learning and creating microservices in Perl.
Perl7-Handy INA 0.01 Handy Perl7 scripting environment on Perl5
Plack-App-Login SKIM 0.01 Plack login application.
Plasp SLEUNG 1.00 PerlScript/ASP
RT-Extension-TravisCI BPS 0.01 RT-Extension-TravisCI Extension
Rex-Hook-File-Impostor FERKI v0.1.0.1 execute Rex file management commands on a copy of the original file
Role-RunAlone BOFTX v0.0.0_01 prevent multiple instances of a script from running
RxPerl-AnyEvent KARJALA v0.28.3 AnyEvent adapter for RxPerl
RxPerl-IOAsync KARJALA v0.28.2 IO::Async adapter for RxPerl
RxPerl-Mojo KARJALA v0.28.1 Mojo::IOLoop adapter for RxPerl
SPVM-AI-Util KIMOTO 0.01 AI Utilities for array operations, matrix operations, activate function, and cost function etc.
ScriptX PERLANCAR 0.000 A plugin-based script framework
ScriptX-Rinci PERLANCAR 0.000 Run Rinci function
String-TtyLength NEILB 0.01 calculate length of string excluding ANSI tty codes
Tags-HTML-SendMessage SKIM 0.08 Tags helper for send message form.
Test-Mojo-Role-HTTPstatus DCANTRELL v1.0.0
Test-Mojo-Role-Log OETIKER v0.1.0 Testing Mojo Log messages
Test-ZZZ STDCRM v0.0.1 This class is the common SDKException object. This stands as a POJO for the SDKException thrown.
Types-TypedCodeRef MPOLIIU 0.00_1 Type constraint for any typed subroutine.
Weather-NHC-TropicalCyclone DANX 0.01 Provides a convenient interface to NHC's Tropical Cyclone JSON format.
Weather-PurpleAir-API TTKCIAR 0.02 Client for using the purpleair.com air quality sensor API
WordList-EN-Common-COCA-Top1000 PERLANCAR 0.001 1000 most common English words, from COCA
WordList-EN-Common-EF-Top3000 PERLANCAR 0.001 3000 most common English words, from EF
WordList-EN-Oxford3000-Learner PERLANCAR 0.001 The most important words to learn in English
YAML-Tidy TINITA 0.001 Tidy YAML files
Z TOBYINK 0.001 collection of modules for rapid app development
ZZZ-SDK STDCRM v0.0.1 This class to initialize Zoho CRM SDK

Stats

Number of new CPAN distributions this period: 72

Number of authors releasing new CPAN distributions this period: 47

Authors by number of new CPAN distributions this period:

No Author Distributions
1 PERLANCAR 12
2 ETJ 5
3 KARJALA 3
4 SKIM 2
5 MIRK 2
6 SKLUKIN 2
7 MICHAEL 2
8 SHLOMIF 2
9 TOBYINK 2
10 STDCRM 2
11 LGEHLEN 2
12 WORTHMINE 1
13 GRYPHON 1
14 OETIKER 1
15 NEILB 1
16 SMONFF 1
17 ADDICT 1
18 ZEUS 1
19 CREDO 1
20 GNZL 1
21 JULIODCS 1
22 LNATION 1
23 UTGWKK 1
24 WESLEY 1
25 DCANTRELL 1
26 BRTASTIC 1
27 DAEMON 1
28 PERLSRVDE 1
29 DOHNUTS 1
30 TINITA 1
31 BOFTX 1
32 ECHERNOF 1
33 FERKI 1
34 BPS 1
35 DANX 1
36 SLAFFAN 1
37 PLICEASE 1
38 MSIKORA 1
39 NHORNE 1
40 IKLUFT 1
41 SLEUNG 1
42 INA 1
43 KIMOTO 1
44 TTKCIAR 1
45 MPOLIIU 1
46 SZABGAB 1
47 IANSEALY 1

CLI programs and scripts I use daily 1: net{on,off}, bt{on,off}, {,un}pause-browsers

Hey, another mini-article series! Since I use the CLI a lot and also publish a bunch of CLI scripts on CPAN, this series will serve mainly as a list of mentions for my scripts, as well as for other CLI programs and scripts I use daily.

Let's start with browsing and power-saving.

Browsing is one of everybody's main activities nowadays. Unless you browse using text-based browsers like lynx and links, you'll invariably run into the web obesity crisis (a.k.a. web bloat problem) affecting your battery life. Even if you only open a news article, your laptop may still issue thousands of requests to hundreds of domains to the various analytic tracking beacons, repeatedly every second or so for as long as the tab exists. Multiply that with 5, 10, or 50 tabs. (I seem to have a problem, er, work best, when I keep lots of tabs for various purposes open. You might also correctly guess that my desk is messy.) The result, your browser processes are eating between 20% to 50% or more CPU even when you are not focused on any of browser windows. I often find myself just typing on a terminal emulator and seeing that my system load is 0.75 or even greater thatn 1.00, only because I have Firefox open. Linux desktop often not being the most power-efficient environment, this certainly does not help.

I try to actively conserve power whenever I am not close to an available power outlet. So whenever I am coding or writing and not needing the Internet, I issue this:

% netoff; pause-browsers

netoff (and its counterpart neton) will use NetworkMonitor to turn off (or on) networking. pause-browsers will kill -STOP browser processes, which I find, though relatively blunt, is convenient to save power. There doesn't seem an addon or menu setting to let you freeze one or more tabs or globally disable and re-enable JavaScript instantly. The various ways to disable Javascript (including javascript.enabled Firefox config, or uMatrix or uBlock addon) usually require you to refresh the page, and/or only work for a single site or tab. Other ways to freeze tabs will simply clear the tab content and require you to reload, which for me defeat the purpose of having many tabs open.

When you want to browse again, you can issue:

% neton; btoff; unpause-browsers

btoff is for turning Bluetooth back off, because NetworkMonitor always wants to turn my bluetooth on when I turn my networking on, regardless of the previous bluetotoh state. Aside from {pause,unpause}-browsers, I also made scripts for specific browsers: pause-firefox, pause-chrome, pause-vivaldi, pause-opera. You can also only pause/unpause (as well as kill) processes of certain Unix users, if you happen to run several in a single system (which I often do, before using Multi-Account Containers addon).

Multi-Account Containers Firefox addon

I made a separate blog post for this. Basically I use this addon and have lots of containers created. I write scripts to sort, list, or modify/delete them from the CLI.

Suspending

As any Linux laptop user experience, automatic suspending by closing the lid is randomly screwy, some brands more so than the others. I find this invocation more reliable (oh it still randomly fails too from time to time, but much less often):

# sleep 3; pm-suspend

The sleep part is to give me time to lock the screen (e.g. press Ctrl-Alt-L), because otherwise your laptop will wake up unlocked.

Checking the battery

I find:

% acpi

often faster than moving my graphical pointer to the battery widget on the desktop tray. As a bonus, there's acpi -V which will give you lots more information.

List of new CPAN distributions – Aug 2020

dist author version abstract
Acme-AutoLoad BBB 0.04 Automatically load uninstalled CPAN modules on the fly.
Acme-CPANModules-DiffWrappers PERLANCAR 0.001 Wrappers for the diff Unix command
Acme-CPANModules-GrepVariants PERLANCAR 0.001 Grep-like CLI utilities available on CPAN
Acme-CPANModules-Roles PERLANCAR 0.001 Doing roles with Perl
Acme-CPANModules-RsyncWrappers PERLANCAR 0.001 Wrappers for the rsync command
App-ArgUtils PERLANCAR 0.001 CLI utilities related to command-line arguments
App-DiffDocText PERLANCAR 0.001 Diff the text of two Office word-processor documents (.doc, .docx, .odt, etc)
App-DumpVivaldiHistory PERLANCAR 0.001 Dump Vivaldi history
App-LibreOfficeUtils PERLANCAR 0.000 Utilities related to LibreOffice
App-MSOfficeUtils PERLANCAR 0.000 Utilities related to Microsoft Office
App-OfficeUtils PERLANCAR 0.001 Utilities related to Office suite files (.doc, .docx, .odt, .xls, .xlsx, .ods, etc)
App-SubtitleUtils PERLANCAR 0.001 Utilities related to video subtitles
App-TimeTracker-Command-GitHub DOMM 1.000 App::TimeTracker GitHub plugin
App-YoutubeDlUtils PERLANCAR 0.001 Utilities (mostly wrappers) related to youtube-dl
App-ZFSCurses MONSIEURP 1.00 curses UI to query and modify a ZFS dataset properties.
App-gqmt ZEUS 0.2 a stub module for gqmt
App-mkpkgconfig DJERIUS v2.0.0 create pkg-config metadata files
App-perlmv-scriptlet-add_prefix PERLANCAR 0.001 Add prefix to filenames
App-perlmv-scriptlet-add_suffix PERLANCAR 0.001 Add suffix to filenames
App-perlmv-scriptlet-number_tracks PERLANCAR 0.001 Add track number to filenames
App-perlmv-scriptlet-prefix_with_number PERLANCAR 0.001 Prefix filenames with number (usually to make them easily sortable)
App-size-dir-diff KASREYN v0.3.7 find differences between two directories
App-size_dir_diff KASREYN v0.3.4 find differences between two directories
Attribute-Handlers-Clean ZARABOZO 1.00 Simpler definition of attribute handlers, without messing with UNIVERSAL.
B-Hooks-OP-Check-LeaveEval SNEZ v0.0.1 call a subroutine when new code finishes compiling
Bencher-Scenario-FormattingISO8601DateTime PERLANCAR 0.001 Modules that format DateTime as ISO8601
Bencher-Scenarios-TextTableTiny PERLANCAR 0.001 Scenarios for benchmarking Text::Table::Tiny
Bosch-RCPPlus NICKCIS 1.2 Perl 5 implementation of the Bosch RCP+ remote procedure call.
CGI-Application-Plugin-OpenTracing-DataDog VANHOESEL v0.1.0 Simple CGI with DataDog tracing
CSS-Object JDEGUEST v0.1.1 CSS Object Oriented
CSS-Struct SKIM 0.01 Struct oriented CSS manipulation.
CSS-Struct-Output-Indent SKIM 0.01 Indent printing 'CSS::Struct' structure to CSS code.
Class-Measure-Scientific-FX_992vb IPENBURG v0.0.1 units of measurement like the CASIO fx-992vb
Config-INI-Tiny ARISTOTLE 0.100 Parse INI configuration in extremely little code
Die-To-Stdout JAHERO 0.01 Make die() print the error to both STDOUT and SDERR, then die.
Dist-Zilla-Plugin-Code SKIRMESS 0.001 dynamically create plugins from a bundle
Dist-Zilla-Plugin-Git-Checkout SKIRMESS 0.001 clone and checkout a Git repository
Dist-Zilla-Plugin-PERLANCAR-Authority PERLANCAR 0.001 Add the $AUTHORITY variable and metadata to your distribution
Dist-Zilla-Plugin-PERLANCAR-CheckPendingRelease PERLANCAR 0.001 Check for pending release before releasing
Dist-Zilla-Plugin-perlmv PERLANCAR 0.001 Plugin to use when building App::perlmv and App::perlmv::scriptlet::* distribution
Dist-Zilla-Role-PluginBundle-Zilla SKIRMESS 0.001 adds the zilla object and the logger to your bundles
Docker-Client MARGHI v0.1.0 Docker client
Docker-Construct CAMTAUXE 1.0 Construct the filesystem of an exported docker image.
File-Temp-Patch-NoCleanup PERLANCAR 0.001 Disable File::Temp::tempdir's automatic cleanup (CLEANUP => 1)
Filename-Ebook PERLANCAR 0.001 Check whether filename indicates being an e-book
GDB-bt DMOL 0.01 Get perl backtraces from coredump files
Geo-METAR-Deduced IPENBURG v0.0.1 deduce aviation information from parsed METAR data
Hades LNATION 0.01 The great new Hades!
Hades-Realm-Compiled-Params LNATION 0.01 The great new Hades::Realm::Compiled::Params!
Hades-Realm-Exporter LNATION 0.01 Hades realm for Exporter
Hades-Realm-Import-Export LNATION 0.01 Hades realm for Import::Export
Hades-Realm-Moo LNATION 0.01 Hades realm for Moo!
Hades-Realm-Moose LNATION 0.01 Hades realm for Moose
Hades-Realm-Mouse LNATION 0.01 Hades realm for Mouse
Hades-Realm-OO LNATION 0.01 Hades realm for object orientation
ISBN-SearchByTitle PERLANCAR 0.001 Search ISBN from book title
Jig JRHUNT v0.22.0 Tools for Crafting Code in Perl
LWP-UserAgent-Plugin-Retry PERLANCAR 0.001 Retry failed requests
List-GroupBy JLCOOPER 0.01 Group a list of hashref's to a multilevel hash of hashrefs of arrayrefs
Log-Dispatch-UnixSyslog RJBS 0.001 log events to syslog with Unix::Syslog
Log-Log4perl-OpenTracing VANHOESEL v0.1.0 inject logs with OpenTracing SpanContext
Lox DFARRELL 0.01 A Perl implementation of the Lox programming language
Math-Revhash ZHMYLOVE 0.01 Reversible hashes library
Mojo-DOM-Role-Analyzer STEVIED 0.007 miscellaneous methods for analyzing a DOM
Mojo-UserAgent-Role-Resume KARJALA v0.0.1 Role for Mojo::UserAgent that provides resuming capability during downloads
Mojolicious-Plugin-CoverDb LDIDRY 0.01 Mojolicious::Plugin::CoverDb – Mojolicious Plugin which exposes a directory (designed for a cover_db dir, created by Devel::Cover).
Mojolicious-Plugin-InlineJSON MSTROUT 0.009_001 Bootstrap your app with inline JSON
Mojolicious-Plugin-MultiLanguage MONSTAR 0.01 Find available native language in your Mojolicious app
Mojolicious-Plugin-StrictCORS MONSTAR 0.01 Strict CORS routes in your Mojolicious app
MooX-Private-Attribute LNATION 0.01 private attributes
MooX-Role-RunAlone BOFTX v0.0.0_01 prevent multiple instances of a script from running
Net-EtcDv2 GREENEG v0.0.2 A object oriented Perl module to interact with the EtcD version 2 API
Net-Kalk FACILA 2.00 Perl extension for calculate addresses and networks IP
Number-Stars SKIM 0.01 Class for conversion between percent number to star visualization
OPUS-Tools TIEDEMANN 0.2.2 a collection of tools for processing OPUS corpora
P2-Scheduler GRUBERT 0.04 This module helps organizing monthly tests at component level.
PDF-API2-XS SSIMMS 1.000 Optional PDF::API2 add-on using XS to speed up expensive operations
PINE64-MCP9808 CREDO 0.01 The great new PINE64::MCP9808!
POE-Component-TLSify BINGOS 0.02 Makes using SSL/TLS in the world of POE easy!
Plack-App-Env SKIM 0.01 Plack env dump application.
Pod-Weaver-Plugin-perlmv PERLANCAR 0.001 Plugin to use when building App::perlmv and App::perlmv::scriptlet::* distribution
Preprocess-Ops PRBRENAN 20200811 Preprocess ▷ and ▶ as method dispatch operators in ANSI-C.
Quantum-Superpositions-Lazy BRTASTIC 1.00 Weighted QM-like superpositions with lazy evaluation
Regexp-Common-Markdown JDEGUEST v0.1.1 Markdown Common Regular Expressions
RestAPI GRUBERT 0.09 a base module to interact with a REST API interface
SQL-Engine AWNCORP 0.01 SQL Generation for Perl 5
Search-Elasticsearch-Client-7_0 EZIMUEL 7.30_1 Thin client with full support for Elasticsearch 7.x APIs
Search-Elasticsearch-Client-7_0-Async EZIMUEL 7.30_1 Thin async client with full support for Elasticsearch 7.x APIs
String-Locale LNATION 0.01 display text locally.
String-Numeric-Whatever WORTHMINE 0.03 It's a test implement to ignore the difference between E<lt=gt> and cmp
Sub-Daemon ITRUNAEV 0.01 base class for a deamons
Tags-HTML-Messages SKIM 0.01 Tags helpers for HTML messages.
Tags-HTML-Page-Begin SKIM 0.01 Tags helpers for HTML page begin.
Tags-HTML-Page-End SKIM 0.01 Tags helper for HTML page end.
Tags-HTML-Stars SKIM 0.01 Tags helper for stars evaluation.
Term-Scroller CAMTAUXE 1.0 Display text in a scrolling viewport in your terminal
Text-Table-Sprintf PERLANCAR 0.001 Generate simple text tables from 2D arrays using sprintf()
WWW-Amazon-Book-Extract PERLANCAR 0.001 Extract information from an Amazon book page
WordList-EN-Common-EF-Top1000 PERLANCAR 0.001 1000 most common English words, from EF
WordList-Test-Dynamic-RandomWord-1000 PERLANCAR 0.001 1000 random words
XLog SYBER v1.0.0 Unified logging API, without performance penalties.
XLog-File SYBER v1.0.0 XLog backend for logging to file
Zodiac-Angle SKIM 0.01 Class for zodiac angle manipulation
gqmt ZEUS 0.2 Graphql Query Mutation Tool
perl-Bosch-RCPPlus NICKCIS 1.0 Perl 5 implementation of the Bosch RCP+ remote procedure call.
regather ZEUS 0.80 LDAP syncrepl consumer script to perform actions desired on syncrepl event.

Stats

Number of new CPAN distributions this period: 106

Number of authors releasing new CPAN distributions this period: 46

Authors by number of new CPAN distributions this period:

No Author Distributions
1 PERLANCAR 30
2 LNATION 10
3 SKIM 9
4 SKIRMESS 3
5 ZEUS 3
6 EZIMUEL 2
7 VANHOESEL 2
8 KASREYN 2
9 NICKCIS 2
10 SYBER 2
11 MONSTAR 2
12 IPENBURG 2
13 GRUBERT 2
14 CAMTAUXE 2
15 JDEGUEST 2
16 TIEDEMANN 1
17 ITRUNAEV 1
18 RJBS 1
19 PRBRENAN 1
20 JRHUNT 1
21 ZHMYLOVE 1
22 BOFTX 1
23 MONSIEURP 1
24 FACILA 1
25 LDIDRY 1
26 ZARABOZO 1
27 DJERIUS 1
28 KARJALA 1
29 ARISTOTLE 1
30 AWNCORP 1
31 MSTROUT 1
32 SNEZ 1
33 STEVIED 1
34 DMOL 1
35 GREENEG 1
36 DFARRELL 1
37 DOMM 1
38 BBB 1
39 JAHERO 1
40 CREDO 1
41 JLCOOPER 1
42 WORTHMINE 1
43 SSIMMS 1
44 BINGOS 1
45 BRTASTIC 1
46 MARGHI 1

List of new CPAN distributions – Jul 2020

dist author version abstract
AWS_SES_Signature PARTHA 4 Perl extension for blah blah blah
Acme-CPANModules-ConvertingRadix PERLANCAR 0.001 Convert the radix (base) of a number from one to another
Acme-CPANModules-SExpression PERLANCAR 0.001 Working with S-expression in Perl
Alien-Boost CONTRA 1.0 Find or build libboost
AntDen LIJINFENG v0.0.1 A is a general computing platform
App-UpdateCPANfile HITODE 0.01 cpanfile updater
App-turbocopy ART 0.001 CLI utility to copying files in more effective way
Catalyst-Plugin-DetachIfNotModified RRWO v0.1.0 Short-circuit requests with If-Modified-Since headers
CommonMark-Massage JV 0.01 Manipulate CommonMark AST
Complete-Vivaldi PERLANCAR 0.001 Completion routines related to Vivaldi browser
Compress-Stream-Zstd PMQS 0.201 Perl interface to the Zstd (Zstandard) (de)compressor
Config-Reader QORG 0 Very simple config reader
Const-Introspect-C PLICEASE 0.01 Find and evaluate C/C++ constants for use in Perl
Crypt-PBE GDT 0.100 Perl extension for PKCS #5 Password-Based Encryption Algorithms
DBD-SQLite-BundledExtensions SIMCOP 0.002 Provide a series of C extensions for DBD::SQLite and some helper functions to load them
DBIx-OpenTracing SNEZ v0.0.1 automatically create OpenTracing spans around DBI queries
DNS-Hetzner RENEEB 0.01 Perl library to work with the API for the Hetzner DNS
DNS-nsdiff FANF 1.82 create an 'nsupdate' script from DNS zone file differences
DTOne-Crypt ATANCASIS 0.01 Cryptographic Toolkit
Devel-TraceRun ETJ 0.001 Shows all the function calls and returns in a Perl program
ExtUtils-MakeMaker-PPPort ATOOMIC 0.01 ExtUtils::MakeMaker when using Devel-PPPort
File-FormatIdentification-Pronom ART 0.002 Perl extension for parsing PRONOM-Signatures using DROID-Signature file
File-Sticker RUBYKAT 0.9301 Read, Write file meta-data
IO-Compress-Zstd PMQS 2.095 Write zstd files/buffers
JSON-API-v1 WATERKIP 0.001 A JSON API object according to jsonapi.org v1 specification
JSON-SchemaValidator VTI 1.01 JSON Schema Validator
Linux-Realtimed ACANFORA 0.1 a drop-in daemon replacement for Incrond (see https://linux.die.net/man/8/incrond).
Linux-realtimed ACANFORA 0.9 a drop-in daemon replacement for Incrond (see https://linux.die.net/man/8/incrond).
Media-MediaInfoLib JIRO 0.01 Perl interface to the MediaInfoLib
Metrics-Any-Adapter-Routable PEVANS 0.01 configurable routing of reported metrics
Module-Format-AsHTML SHLOMIF 0.0.1 generate HTML links to metacpan module/dists pages.
Mojolicious-Plugin-Rex PINGAN 0.01 The great new Mojolicious::Plugin::Rex!
Mojolicious-Plugin-SNMP PINGAN 0.01 The great new Mojolicious::Plugin::SNMP!
Mojolicious-Plugin-ServiceWorker ETJ 0.01 plugin to aid real-time web push
Mojolicious-Plugin-Vue PINGAN 0.01 The great new Mojolicious::Plugin::Vue!
Mojolicious-Plugin-WebPush ETJ 0.01 plugin to aid real-time web push
Mom TOBYINK 0.001 Moo objects minimally
NIP-Generator STRZELEC 1.0 generator of polish fiscal identifiers.
Net-AWS-SES-Signature4 PARTHA 0.01 Perl extension that implements Amazon Simple Email Service (Amazon SES) API requests that are signed using Signature Version 4 processes
Netconf PINGAN 0.01 The great new Netconf!
OOP-Private ANONYMOUS 1.0 Private and protected methods
OpenTracing-Integration-DBI TEAM 0.001 OpenTracing APM support for DBI-based database interaction
OpenTracing-Integration-Email-Sender TEAM 0.001 OpenTracing APM support for email sent via Email::Sender
OpenTracing-Integration-RedisDB TEAM 0.001 OpenTracing APM support for RedisDB-based database interaction
Plack-Middleware-Acme-AAHTTPHeader BAYASHI 0.01 Add ASCII Art into HTTP Header
RT-Extension-AuditLog LENDL 0.02 RT-Extension-AuditLog Extension
Regexp-Pattern-Filename-Compressed PERLANCAR 0.001 Compressed data filename
Regexp-Pattern-Filename-Image PERLANCAR 0.001 Image filename
SQL-Validator AWNCORP 0.01 Validate JSON-SQL Schemas
Sah-Schemas-Vivaldi PERLANCAR 0.001 Various Sah schemas related to Vivaldi browser
SignalR JWRIGHT 0.001 Perl SignalR Implementations
Soo GEOJS 0.0.1 Simple object oriented system for Perl
Superluminal MLEHMANN 0.01 provisioning, deployment and generic task execution toolkit
Termbox SANKO 0.10 Create Text-based User Interfaces Without ncurses
Text-ANSI-Fold-Util UTASHIRO 0.01 Text::ANSI::Fold utilities
Text-Levenshtein-BV WOLLMERS 0.01 Bit Vector (BV) implementation of the Levenshtein Algorithm
Types-Algebraic SEBBE 0.01 Algebraic data types in perl
Vivaldi-Util-Profile PERLANCAR 0.001 List available Vivaldi profiles
Wireless-Radar BASEBAND 0
Wireless-Scanner BASEBAND 0.01 Wireless-Scanner is a small script which scan both bluetooth and wifi devices near you ( BETA 0.01 )
WordLists-EN-CommonException PERLANCAR 0.001 Collection of English common exception words
YANG PINGAN 0.02 The great new YANG!
Yang PINGAN 0.01 The great new Yang!
cPanel-APIClient CPANEL 0.01 cPanel APIs, à la TIMTOWTDI!
mb INA 0.01 run Perl script written in MBCS
realtimed ACANFORA 0.9 a drop-in daemon replacement for Incrond (see https://linux.die.net/man/8/incrond).

Stats

Number of new CPAN distributions this period: 66

Number of authors releasing new CPAN distributions this period: 44

Authors by number of new CPAN distributions this period:

No Author Distributions
1 PERLANCAR 8
2 PINGAN 6
3 ACANFORA 3
4 TEAM 3
5 ETJ 3
6 PMQS 2
7 PARTHA 2
8 BASEBAND 2
9 ART 2
10 CPANEL 1
11 RUBYKAT 1
12 PEVANS 1
13 RRWO 1
14 UTASHIRO 1
15 SNEZ 1
16 STRZELEC 1
17 LIJINFENG 1
18 ATANCASIS 1
19 SIMCOP 1
20 TOBYINK 1
21 SANKO 1
22 MLEHMANN 1
23 SEBBE 1
24 GEOJS 1
25 LENDL 1
26 JIRO 1
27 QORG 1
28 PLICEASE 1
29 JWRIGHT 1
30 FANF 1
31 INA 1
32 SHLOMIF 1
33 ANONYMOUS 1
34 WOLLMERS 1
35 ATOOMIC 1
36 RENEEB 1
37 VTI 1
38 GDT 1
39 BAYASHI 1
40 WATERKIP 1
41 AWNCORP 1
42 JV 1
43 CONTRA 1
44 HITODE 1

List of new CPAN distributions – Jun 2020

dist author version abstract
Acme-CPANModules-BrowserUtilities PERLANCAR 0.001 Utilities for web browsers
Acme-CPANModules-ColorThemedModules PERLANCAR 0.001 Modules that has color theme support
Acme-ful RWILLIS 0.01 A nifty "find upper lib" pragma
Alien-castxml PLICEASE 0.01 Find or build castxml
App-BorderStyleUtils PERLANCAR 0.001 CLI utilities related to border styles
App-FfmpegUtils PERLANCAR 0.001 Utilities related to ffmpeg
App-PP-Autolink SLAFFAN 2.00 Pack PAR executables, finding dynamic libs automatically
App-Timestamper-WithElapsed SHLOMIF 0.0.1 display the timestamp STDIN lines were received and the elapsed seconds since the last received line.
App-UnixUIDUtils PERLANCAR 0.001 Utilities related to Unix UID/GID
App-YoutubeDlIf PERLANCAR 0.001 Download videos using youtube-dl with extra selection/filtering
App-YoutubeDlIfNotYet PERLANCAR 0.001 Download videos using youtube-dl only if videos have not been donwnloaded yet
App-column-run PERLANCAR 0.001 Run several commands and show their output in multiple columns
App-cpanel ETJ 0.001 CLI for cPanel UAPI and API 2
App-tables PERLANCAR 0.001 Manipulate Tables::* modules
App-trash-all-empty-files-u PERLANCAR 0.001 Trash all empty files in the current directory tree, with undo/redo capability
Aspose3DCloud-ThreeDCloudApi ASPOSE v20.5.0 Aspose.3D Cloud SDK
Authen-TOTP TCHATZI 0.0.1 Interface to RFC6238 2FA
Avro IEMEJIA 1.10.0 official Perl API for the Avro serialization and RPC framework
Azure-SAS-Timestamp WHOSGONNA 0.0.2 Creating timestamps for Azure Shared Access Signatures.
Bio-MUST-Apps-OmpaPa DBAURAIN 0.201810 Main class for ompa-pa tool
BorderStyle PERLANCAR 2.0.1 Border styles
BorderStyleBase PERLANCAR 0.001 A suitable base class for most BorderStyle::* modules
BorderStyles-Standard PERLANCAR 0.001 A standard collection of border styles
BorderStyles-Test PERLANCAR 0.001 A collection of border styles, mainly for testing
Clang-CastXML PLICEASE 0.01 C-family abstract syntax tree output tool
Code-ART DCONWAY 0.000002 Analyze/Rename/Track Perl source code
Color-HSL-Util PERLANCAR 0.001 Utilities related to HSL color space
Color-HSV-Util PERLANCAR 0.001 Utilities related to HSV color space
ColorTheme PERLANCAR 2.0.0 Color theme class and color theme structure
ColorTheme-GraphicsColorNames PERLANCAR 0.001 Display Graphics::ColorNames::* color scheme as color theme
ColorTheme-Harmony-Analogous PERLANCAR 0.001 Create color theme using analogous color harmony rule
ColorTheme-Harmony-Monochromatic PERLANCAR 0.001 Create a monochromatic color theme
ColorTheme-Lens-Darken PERLANCAR 0.001 Darken other theme
ColorTheme-Lens-Lighten PERLANCAR 0.001 Lighten other theme
ColorTheme-Lens-Tint PERLANCAR 0.001 Tint other theme
ColorThemeBase-Static PERLANCAR 0.001 Base class for color theme modules with static list of colors
ColorThemeRole-ANSI PERLANCAR 0.001 Roles for using ColorTheme::* with ANSI codes
ColorThemeUtil-ANSI PERLANCAR 0.001 Utility routines related to color themes and ANSI code
ColorThemes-Standard PERLANCAR 0.001 A standard collection of generic color themes
ColorThemes-Test PERLANCAR 0.001 A collection of color themes, mainly for testing
ColorTransforms-Standard PERLANCAR 0.001 Standard collection of color transforms
Crypt-RFC8188 ETJ 0.01 Implement RFC 8188 HTTP Encrypted Content Encoding
Data-Dump-ObjectAsString PERLANCAR 0.001 Like Data::Dump but objects are stringified instead of dumped
Data-Dump-Options PERLANCAR 0.001 Like Data::Dump but with some more options
Data-Validate-WithYAML-Plugin-EmailMX RENEEB 0.01 Plugin to check if a mx exists for the given mail address
Date-Holidays-AW WATERKIP 0.001 Aruba's official holidays
Date-Holidays-NL WATERKIP 0.003 The Netherlands official holidays
Devel-Confess-Patch-UseDataDumpObjectAsString PERLANCAR 0.001 Use Data::Dump::ObjectAsString to stringify reference
Device-Chip-NoritakeGU_D PEVANS 0.01 chip driver for Noritake GU-D display modules
Dist-Zilla-Plugin-ColorTheme PERLANCAR 0.001 Plugin to use when building distribution that has ColorTheme modules
Dist-Zilla-PluginBundle-Author-DERIV DERIV 0.001 Defines common dist.ini config for distributions by DERIV
Dist-Zilla-Role-GetSharedFileURL PERLANCAR 0.001 Get URL to a shared file
Excel-ValueReader-XLSX DAMI 1.0 extracting values from Excel workbooks in XLSX format, fast
File-Trash-EmptyFiles-Undoable PERLANCAR 0.001 Trash all empty files in the current directory tree, with undo/redo capability
File-lockf PHENSON 0.26 Perl module interface to the lockf system call
Finance-Tax-Aruba WATERKIP 0.001 A package that deal with tax calculations for Aruba
Future-Buffer PEVANS 0.01 a string buffer that uses Futures
Getopt-EX-i18n UTASHIRO 0.01 General i18n module
Graphics-ColorNames-HTML_ID PERLANCAR 3.3.1.000 HTML color names and equivalent RGB values (Indonesian translation)
Graphics-ColorNamesLite-All PERLANCAR 0.001 Lots of color names and equivalent RGB values (lite version)
Graphics-ColorNamesLite-HTML_ID PERLANCAR 3.3.1.001.000 HTML color names and equivalent RGB values (Indonesian translation) (lite version)
Graphics-ColorNamesLite-WWW PERLANCAR 1.14.000 WWW color names and equivalent RGB values (lite version)
Guacamole XSAWYERX 0.001 A parser toolkit for Standard Perl
ISO-15924 TIEDEMANN 0.01 Language scripts
ISO-639-3 TIEDEMANN 0.01 Language codes and names from ISO::639
ISO-639-5 TIEDEMANN 0.01 Language groups
Log-Any-Adapter-OpenTracing TEAM 0.001 provides Log::Any support for OpenTracing spans
Log-ger-UseDataDumpObjectAsString PERLANCAR 0.001 Use Data::Dump::ObjectAsString to dump data structures
Log-ger-UseDataDumpOptions PERLANCAR 0.001 Use Data::Dump::Options to dump data structures
Module-Load-Util PERLANCAR 0.001 Some utility routines related to module loading
Mojolicious-Command-Author-generate-cpanfile GRAF 0.01 cpanfile generator command
Mojolicious-Command-proxy ETJ 0.001 Proxy web requests elsewhere
Neo4j-Client MAJENSEN 0.1 Build and use the libneo4j-client library
OpenSMTPD-Password NAVALNED 0.03 Perl extension for creating password hashes
OpenSMTPD-Password-XS NAVALNED 0.01 OpenBSD XS backend for OpenSMTPD::Password
OpenTelemetry TEAM 0.001 supporting for application process monitoring, as defined by opentelemetry.io
PINE64-MCP300x CREDO 0.9 Perl interface to the MCP300x family of 10-bit analog to digital converters.
PINE64-MCP3208 CREDO 0.9 Perl interface to the MCP3208 12-bit SPI analog to digital converters.
Pass-OTP JBAIER 1.2 Perl implementation of HOTP / TOTP algorithms
Pluto AWNCORP 0.01 Functional Scripting for Perl 5
Pod-Weaver-Plugin-BorderStyle PERLANCAR 0.001 Plugin to use when building distribution which has BorderStyle::* modules
Pod-Weaver-Plugin-ColorTheme PERLANCAR 0.001 Plugin to use when building distribution which has ColorTheme::* modules
Progress-Any-Examples PERLANCAR 0.001 Examples for Progress::Any
Regexp-Pattern-Filename-Archive PERLANCAR 0.001 Archive filename
Regexp-Pattern-Filename-Backup PERLANCAR 0.001 Backup filename
Regexp-Pattern-Filename-Media PERLANCAR 0.001 Media (image/audio/video) filename
Regexp-Pattern-Perl PERLANCAR 0.001 Regexp patterns related to Perl
Role-TinyCommons-TermAttr-Color PERLANCAR 0.001 Determine color depth and whether to use color or not
Role-TinyCommons-TermAttr-Interactive PERLANCAR 0.001 Determine whether terminal application is running interactively
Role-TinyCommons-TermAttr-Size PERLANCAR 0.001 Determine the sane terminal size
Role-TinyCommons-TermAttr-Software PERLANCAR 0.001 Find out information about terminal (emulator) software we run on
SMS-Send-UK-GovUkNotify ANDREWISH v0.0.1
SMS-Send-VoIP-MS MRDVT 0.02 SMS::Send driver for VoIP.ms
Sah-PSchema PERLANCAR 0.001 Retrieve and resolve parameterized Sah schema
Sah-PSchemas PERLANCAR 0.1.0 Convention for Sah-PSchemas-* distribution
Sah-PSchemas-Perl PERLANCAR 0.001 Parameterized schemas related to Perl
Sah-Schemas-GraphicsColorNames PERLANCAR 0.001 Sah schemas related to Graphics::ColorNames
SkewHeap-PP JEFFOBER 0.01 a fast and flexible heap structure
Stance-GitHub JRHUNT v1.0.0 A Perl Interface to GitHub
Stance-Vault JRHUNT v1.0.0 A Perl Interface to Hashicorp Vault
Sub-Attribute-Prototype PEVANS 0.01 polyfill for :prototype attribute on older perls
Sys-Pipe FELIPE 0.01 pipe2() in Perl
Term-App-Util-Color PERLANCAR 0.001 Determine color depth and whether to use color or not
Term-App-Util-Interactive PERLANCAR 0.001 Determine whether terminal application is running interactively
Term-App-Util-Size PERLANCAR 0.001 Determine the sane terminal size (width, height)
Test-OpenTracing-Integration VANHOESEL v0.100.1 Easy Testing of OpenTracing Integrations
Test-OpenTracing VANHOESEL v0.100.0 In-Memory OpenTracing Test Implementation
Test2-Plugin-Cover EXODIST 0.000001 Fast and Minimal file coverage info.
Test2-Plugin-GitHub-Actions-AnnotateWarnings UTGWKK 0.01 Annotate warnings with GitHub Actions workflow command
Text-Column-Util PERLANCAR 0.001 Utilities for displaying text in multiple columns
Text-Mrkdwn-Escape DLAMBLEY 0.01 Escape text for inclusion in mrkdwn
Text-Table-TinyBorderStyle PERLANCAR 0.001 Text::Table::Tiny + support for colored text
Translate-Fluent NEVES v0.6.2 A perl implementation of Project Fluent Translations.
Tree-Ops PRBRENAN 20200626 Tree operations.
URI-Escape-Any PERLANCAR 0.001 Use XS-based URI escape module, fallback to URI::Escape
URI-Escape-Path PERLANCAR 0.001 Like URI::Escape, but does not escape '/'
Whim JMAC 1.2020.06.22.0 A webmention multitool
Win32-WindowGeometry PHATWARES 1.00 Simple module to search for open windows by title and move/resize them
WordList-Color-Any PERLANCAR 0.001 Wordlist from any Graphics::ColorNames::* module
WordList-EN-Color-CSS PERLANCAR 0.001 Color names from Graphics::ColorNames::CSS
WordList-EN-Color-WWW PERLANCAR 0.002 Color names from Graphics::ColorNames::WWW
WordList-EN-Color-X PERLANCAR 0.001 Color names from Graphics::ColorNames::X
WordList-ID-Color-HTML_ID PERLANCAR 0.001 List of color names from Graphics::ColorNames::HTML_ID
WordList-ID-Color-PERLANCAR PERLANCAR 0.001 List of color names in Indonesian
WordList-Tables PERLANCAR 0.001 Wordlist from a column of table from Tables::* module
Zing AWNCORP 0.01 Multi-Process Management System
class-with-roles PERLANCAR 0.001 Shortcut for using a class and applying it some Role::Tiny roles, from the command line
ful RWILLIS 0.01 A fülish "find upper lib" pragma
perl-Mail-Exim-MainLogParser RGLAUE 0.2 Parse log lines from the Exim Main Log

Stats

Number of new CPAN distributions this period: 129

Number of authors releasing new CPAN distributions this period: 42

Authors by number of new CPAN distributions this period:

No Author Distributions
1 PERLANCAR 72
2 WATERKIP 3
3 TIEDEMANN 3
4 PEVANS 3
5 ETJ 3
6 JRHUNT 2
7 TEAM 2
8 VANHOESEL 2
9 RWILLIS 2
10 PLICEASE 2
11 AWNCORP 2
12 NAVALNED 2
13 CREDO 2
14 RENEEB 1
15 IEMEJIA 1
16 JBAIER 1
17 PHENSON 1
18 PHATWARES 1
19 DCONWAY 1
20 WHOSGONNA 1
21 DLAMBLEY 1
22 SHLOMIF 1
23 PRBRENAN 1
24 JEFFOBER 1
25 MAJENSEN 1
26 SLAFFAN 1
27 ANDREWISH 1
28 RGLAUE 1
29 MRDVT 1
30 JMAC 1
31 DAMI 1
32 DERIV 1
33 UTGWKK 1
34 DBAURAIN 1
35 ASPOSE 1
36 EXODIST 1
37 XSAWYERX 1
38 TCHATZI 1
39 GRAF 1
40 UTASHIRO 1
41 FELIPE 1
42 NEVES 1

The joy of piping tables on the command line

Staying home a lot lately has given me the chance, among other things, to organize my personal media files (photos, videos, audios) and update my remote backups on Google Photos and other cloud services.

To work with these files, I've updated some of my CLI scripts like media-info and td, as well as created a few others like delete-all-empty-dirs, show-duplicate-files, and reencode-videos.

I just want to show again (I've blogged about this once before) that it's absolutely wonderful piping tables on the command-line. While piping bytes on Unix remains as one of the simplest yet most powerful and flexible interprocess communications, to increase the convenience, one can put a layer of encoding/decoding on top of this to pass around higher-level entities. PowerShell, for example, goes full-blown objects. Which can be very convenient sometimes. I choose to output and pipe plain data structures in most of my CLI scripts, particularly table data. With this, I can do things like:

Show a table of data for my videos:

% media-info *
+---------------+--------------+------------+---------+----------+-------------------------+--------+----------------+---------------+-----------+--------------+-----------+--------------+--------------------+-------------------+-----------+---------------------+-------------+
| audio_bitrate | audio_format | audio_rate | backend | duration | media                   | rotate | type_from_name | video_bitrate | video_dar | video_format | video_fps | video_height | video_longest_side | video_orientation | video_sar | video_shortest_side | video_width |
+---------------+--------------+------------+---------+----------+-------------------------+--------+----------------+---------------+-----------+--------------+-----------+--------------+--------------------+-------------------+-----------+---------------------+-------------+
| 59392         | AAC          | 44100      | Ffmpeg  | 59.81    | 2019-08-27 14.40.38.mp4 |        | video          | 1245184       |           | H264         | 59.67     | 848          | 848                | portrait          |           | 400                 | 400         |
| 262144        | AAC          | 48000      | Ffmpeg  | 97.56    | 2019-08-27 19.06.06.mp4 | 180    | video          | 964608        |           | H264         | 30.03     | 352          | 640                | landscape         |           | 352                 | 640         |
| 262144        | AAC          | 48000      | Ffmpeg  | 91.16    | 2019-08-27 19.08.59.mp4 | 180    | video          | 1012736       |           | H264         | 30.04     | 352          | 640                | landscape         |           | 352                 | 640         |
| 262144        | AAC          | 48000      | Ffmpeg  | 91.93    | 2019-08-27 19.10.07.mp4 | 180    | video          | 1006592       |           | H264         | 30.04     | 352          | 640                | landscape         |           | 352                 | 640         |
| 262144        | AAC          | 48000      | Ffmpeg  | 89.58    | 2019-08-27 19.11.24.mp4 | 90     | video          | 1025024       |           | H264         | 30.04     | 352          | 640                | landscape         |           | 352                 | 640         |
| 262144        | AAC          | 48000      | Ffmpeg  | 318.36   | 2019-08-27 19.22.55.mp4 | 180    | video          | 705536        |           | H264         | 29.96     | 352          | 640                | landscape         |           | 352                 | 640         |
| 261120        | AAC          | 48000      | Ffmpeg  | 46.88    | 2019-08-27 19.23.28.mp4 | 180    | video          | 1451008       |           | H264         | 30.06     | 352          | 640                | landscape         |           | 352                 | 640         |
|               |              |            | Ffmpeg  | 5.67     | 2019-08-29 11.01.11.mp4 |        | video          | 3174400       | 9:16      | H264         | 19.94     | 1280         | 1280               | portrait          | 1:1       | 720                 | 720         |
| 131072        | AAC          | 48000      | Ffmpeg  | 18.07    | 2019-08-29 13.56.10.mp4 | 90     | video          | 1851392       |           | H264         | 29.95     | 352          | 640                | landscape         |           | 352                 | 640         |
| 63488         | AAC          | 44100      | Ffmpeg  | 28.89    | 2019-08-29 17.04.49.mp4 | 90     | video          | 1520640       |           | H264         | 29.97     | 480          | 848                | landscape         |           | 480                 | 848         |
| 63488         | AAC          | 44100      | Ffmpeg  | 14.97    | 2019-08-29 17.04.56.mp4 |        | video          | 3277824       | 9:16      | H264         | 29.93     | 1280         | 1280               | portrait          | 1:1       | 720                 | 720         |
| 63488         | AAC          | 44100      | Ffmpeg  | 73.87    | 2019-08-29 17.05.10.mp4 | 90     | video          | 1303552       |           | H264         | 29.97     | 480          | 848                | landscape         |           | 480                 | 848         |
| 64512         | AAC          | 44100      | Ffmpeg  | 51.24    | 2019-08-29 17.05.30.mp4 | 90     | video          | 1374208       |           | H264         | 29.98     | 480          | 848                | landscape         |           | 480                 | 848         |
| 262144        | AAC          | 48000      | Ffmpeg  | 9.11     | 2019-08-30 07.16.24.mp4 |        | video          | 1959936       |           | H264         | 30.22     | 352          | 640                | landscape         |           | 352                 | 640         |
+---------------+--------------+------------+---------+----------+-------------------------+--------+----------------+---------------+-----------+--------------+-----------+--------------+--------------------+-------------------+-----------+---------------------+-------------+

Show the total duration:

% media-info * | td sum
+---------------------+----------+
| key                 | value    |
+---------------------+----------+
| audio_bitrate       | 2279424  |
| audio_format        | 0        |
| audio_rate          | 604500   |
| backend             | 0        |
| duration            | 997.1    |
| media               | 0        |
| rotate              | 1350     |
| type_from_name      | 0        |
| video_bitrate       | 21872640 |
| video_dar           | 0        |
| video_format        | 0        |
| video_fps           | 439.8    |
| video_height        | 7664     |
| video_longest_side  | 11072    |
| video_orientation   | 0        |
| video_sar           | 0        |
| video_shortest_side | 6096     |
| video_width         | 9504     |
+---------------------+----------+

Only select videos that have bitrates higher than 3MiB/s:

% media-info * | td grep '$_->{video_bitrate} > 3_000_000'
+---------------+--------------+------------+---------+----------+-------------------------+----------------+---------------+-----------+--------------+-----------+--------------+--------------------+-------------------+-----------+---------------------+-------------+
| audio_bitrate | audio_format | audio_rate | backend | duration | media                   | type_from_name | video_bitrate | video_dar | video_format | video_fps | video_height | video_longest_side | video_orientation | video_sar | video_shortest_side | video_width |
+---------------+--------------+------------+---------+----------+-------------------------+----------------+---------------+-----------+--------------+-----------+--------------+--------------------+-------------------+-----------+---------------------+-------------+
|               |              |            | Ffmpeg  | 5.67     | 2019-08-29 11.01.11.mp4 | video          | 3174400       | 9:16      | H264         | 19.94     | 1280         | 1280               | portrait          | 1:1       | 720                 | 720         |
| 63488         | AAC          | 44100      | Ffmpeg  | 14.97    | 2019-08-29 17.04.56.mp4 | video          | 3277824       | 9:16      | H264         | 29.93     | 1280         | 1280               | portrait          | 1:1       | 720                 | 720         |
+---------------+--------------+------------+---------+----------+-------------------------+----------------+---------------+-----------+--------------+-----------+--------------+--------------------+-------------------+-----------+---------------------+-------------+

Re-encode those high-bitrate videos:

% media-info * | td grep '$_->{video_bitrate} > 3_000_000' | while read f; do reencode-videos "$f"; done

Show portrait videos:

% media-info * | td grep '$_->{video_height} > $_->{video_width}'

—————————–+————+———+———-+————————-+—————-+—————+———–+————–+———–+————–+——————–+——————-+———–+———————+————-+

audio_bitrate audio_format audio_rate backend duration media type_from_name video_bitrate video_dar video_format video_fps video_height video_longest_side video_orientation video_sar video_shortest_side video_width

—————————–+————+———+———-+————————-+—————-+—————+———–+————–+———–+————–+——————–+——————-+———–+———————+————-+

59392 AAC 44100 Ffmpeg 59.81 2019-08-27 14.40.38.mp4 video 1245184 H264 59.67 848 848 portrait 400 400
Ffmpeg 5.67 2019-08-29 11.01.11.mp4 video 3174400 9:16 H264 19.94 1280 1280 portrait 1:1 720 720
63488 AAC 44100 Ffmpeg 14.97 2019-08-29 17.04.56.mp4 video 3277824 9:16 H264 29.93 1280 1280 portrait 1:1 720 720

—————————–+————+———+———-+————————-+—————-+—————+———–+————–+———–+————–+——————–+——————-+———–+———————+————-+

If I want to meticulously edit the filenames, I can convert the table as CSV:

% media-info * --format csv > media.csv

or:

% media-info * | td2csv > media.csv

Edit the CSV in a spreadsheet, add the column name new_filename, and rename the files again on the CLI:

% csv2td media.csv | td as-aohos | td map 'qq(mv -i "$_->{media}" "$_->{new_filename}")'

mv -i "2019-08-27 14.40.38.mp4" "2019-08-27 14.40.38 – blah blah.mp4" mv -i "2019-08-27 19.06.06.mp4" "2019-08-27 19.06.06 – some description.mp4" mv -i "2019-08-27 19.08.59.mp4" "2019-08-27 19.08.59 – some other description.mp4" …

And pipe it to bash if you have verified the output:

% csv2td media.csv | td as-aohos | td map 'qq(mv -i "$_->{media}" "$_->{new_filename}")' | bash

lcpan tips 023: What’s new (including whatsnew)

About this series: A collection of short blog posts about lcpan tips/recipes. Some posts will also end up in the upcoming App::lcpan::Manual::Cookbook POD to be included in the App::lcpan distribution. First article is here. See the whole series.

About lcpan: an application to download and index a mini CPAN mirror on your local filesystem, so in effect you will have something like your own CPAN with a command-line tool (or perl API) to query and extract information from your mirror.

The previous tip was posted in January 2019. I thought I'd post a status update of what has been added to lcpan since then.

New subcommands

As usual, a bunch of subcommands have been added, most of them for convenience, can be composed from existing subcommands, and not that groundbreaking. For example, the extract-dist subcommands extracts a distro tarball. lcpan already has extract-mod, but sometimes we want to specify a distro name instead of a module. This could almost as easily be expressed using lcpan extract-mod and lcpan dist-mods:

% lcpan extract-dist libwww-perl

can also be written as:

% lcpan extract-mod `lcpan dist-mods libwww-perl | head -n1`

Or, the author, dist, module, release, script subcommands accompany the existing plural versions authors et al to retrieve only a single entity with an exact name search.

The following subcommands have also added: rdeps-scripts, dist-rdeps, heaviest-dists, most-depended-authors, most-mentioned-mods, most-mentioned-scripts, and whatsnew (more on this one below).

Recording of creation and last modification times

One of the most important new features is that lcpan now stores creation time and last modification time of most entities, like authors, modules, dependencies, as well as mentions. Everytime you update the index using lcpan update, when a database record is added or updated, the rec_ctime and rec_mtime columns are set respectively. This means you can query whether a distribution, or author, or dependency is new or recently added. Along with this, many subcommands now sport the filtering options like –added-since, –updated-since, –added-or-updated-since, or the more convenient options like –added-since-last-index-update or –update-since-last-n-index-updates.

For example, to see what modules are added in the last index update:

% lcpan mods -l --added-since-last-index-update

Or, to see what authors are added or updated after Jun 1, 2020 (assuming this year is 2020):

% lcpan authors -l --added-or-updated-since 'jun 1'

Of course, the creation and update times are based on the time you perform lcpan update, since PAUSE itself does not record creation/modification times on the CPAN index files. So if your local CPAN index is only created from scratch today, everything will be new.

Whatsnew

One new subcommand is particularly convenient: whatsnew. It will display modules, distributions, and authors that are recently added/updated, by default since the last index update. And if you specify the –my-author option, or put it in your lcpan.conf:

[subcommand=whatsnew]
my_author=PERLANCAR

then whatsnew will also display new reverse dependencies and new mentions to one of your modules. The output is in the form of Org document, which you can view as-is using a pager, or view using Emacs, directly from the command-line:

% lcpan whatsnew --pager
% lcpan whatsnew --view

There's a demo video for this.

List of new CPAN distributions – May 2020

dist author version abstract
Acme-CPANModules-ListsOfWordsAndNames PERLANCAR 0.001 Modules that contain lists of words and names
Acme-MetaSyntactic-gavan PERLANCAR 0.001 The Space Sheriff Gavan theme
Acme-MetaSyntactic-id_beverages PERLANCAR 0.001 The Indonesian beverages theme
Acme-MetaSyntactic-id_dishes PERLANCAR 0.001 The Indonesian dishes theme
Acme-MetaSyntactic-metal_heroes PERLANCAR 0.001 The Metal Heroes series theme
Acme-MetaSyntactic-unyil PERLANCAR 0.001 The Unyil theme
Acme-PERLANCAR-Test-Dependency-One PERLANCAR 0.001 Test dependencies
Acme-PERLANCAR-Test-Dependency-Three PERLANCAR 0.001 Test dependencies
Acme-PERLANCAR-Test-Dependency-Two PERLANCAR 0.001 Test dependencies
Alien-libnewrelic PLICEASE 0.02 Alien to download and install libnewrelic
Alien-libpcre PLICEASE 0.01 Find or download and install libpcre (The "Perl Compatible" Regular Expressions library)
Alien-libtiff SLAFFAN 1.00 Alien package for libtiff
App-DuplicateFilesUtils PERLANCAR 0.001 CLI utilities related to duplicate files
App-FileRemoveUtils PERLANCAR 0.001 Utilities related to removing/deleting files
App-FileRenameUtils PERLANCAR 0.003 Utilities related to renaming/moving files
App-FirefoxMultiAccountContainersUtils PERLANCAR 0.001 Utilities related to Firefox Multi-Account Containers add-on
App-MediaInfoUtils PERLANCAR 0.127 Utilities related to getting (metadata) information from media files
App-PYX-Optimization SKIM 0.01 PYX optimization tool.
App-Prove-Plugin-MultipleConfig TAKAHITO 0.01 set multiple configs for parallel prove tests
App-Utils VLADO 0.01 an app that contain some useful command-line utilities
App-plasm PLICEASE 0.01 Perl WebAssembly command line tool
App-plx MSTROUT 0.000001 Perl Layout Executor
App-pmhiderename PERLANCAR 0.001 Hide modules by renaming them
Aspose3DCloud-3DApi ASPOSE v20.5.0 Aspose.3D Cloud SDK
Aspose3DCloud-ThreeDApi ASPOSE v20.5.0 Aspose.3D Cloud SDK
AsposeDiagramCloud-DiagramApi ASPOSE v20.3.0 Aspose.Diagram Cloud SDK
AsposeThreeDCloud-ThreeDApi ASPOSE v20.5.0 Aspose.3D Cloud SDK
AsposeThreeDCloud-ThreeDCloudApi ASPOSEAPI v20.5.0 Aspose.3D Cloud SDK
Beam-Make PREACTION 0.001 Recipes to declare and resolve dependencies between things
Bencher-Scenario-PerlPhase PERLANCAR 0.001 Benchmark Perl::Phase
Bencher-Scenarios-ParamsSah PERLANCAR 0.001 Benchmark Params::Sah
CSV-Reader CMANLEY 1.07 CSV reader class
Catalyst-View-MojoTemplate JJNAPIORK 0.001 Use Mojolicious Templates for your Catalyst View
Ceph-Rados-Striper KILINRAX 0.01 Perl extension to wrap libradosstriper-dev and provide striping for Ceph::Rados.
Chemistry-OpenSMILES MERKYS 0.1.0 OpenSMILES format reader
Crypt-OpenSSL-Verify TIMLEGGE 0.10 OpenSSL Verify certificate verification in XS.
Crypto-ECC MICVU 0.001 Elliptic Curve Cryptography Library
DBIx-UpdateTable-FromHoH PERLANCAR 0.001 Update database table from hash-of-hash
DBIx-Util-Schema PERLANCAR 0.001 Utility routines related to database schema
Data-AnyXfer ALUCAS 0.1 data transfer base class
Data-DeepAccess DBOOK 0.001 Access or set data in deep structures
Data-Object-Cli AWNCORP 2.00 Command-line Interface Abstraction for Perl 5
Data-Sah-Tiny PERLANCAR 0.000 Validate Sah schemas with as little code as possible
Date-Holidays-TW GUGOD v0.1.0 Determine whether it is Taiwan Holidays or not.
Device-Chip-BNO055 PEVANS 0.01 chip driver for BNO055
DigiByte-DigiID MICVU 0.001 Digi-ID implementation
Dist-Zilla-PluginBundle-MMCCLIMON MMCCLIMON 5.012 BeLike::MMCCLIMON when you build your dists
FFI-C PLICEASE 0.01 C data types for FFI
FFI-Platypus-Lang-Go PLICEASE 0.01 Documentation and tools for using Platypus with Go
FFI-Platypus-Type-Enum PLICEASE 0.01 Custom platypus type for dealing with C enumerated types
FIDO-Raw JACQUESG 0.01 Perl bindings to the libfido2 library
File-Groups SHAW 0.1000 File extensions and media types, grouped by application and type
Finance-Currency-Convert-Esunbank GUGOD v0.1.0 Query currency exchange rates from Esunbank
Finance-Currency-Convert-SCSB GUGOD v0.1.0 Query currency exchange rates from SCSB (Shanghai Commercial and Savings Bank)
Future-IO-Impl-Glib PEVANS 0.01 implement Future::IO using Glib
Game-RockPaperScissor SPAJAI 0.01 object oriented Game::RockPaperScissor!
Geo-Elevation-HGT ULIBUCK 0.01 Elevation service with terrain data provided by Mapzen and Amazon AWS S3
Geo-LibProj-cs2cs AJNN 1.00 Perl IPC interface to PROJ cs2cs
Graph-Nauty MERKYS 0.1.0 Perl bindings for nauty
GraphQL-Plugin-Convert-MojoPubSub ETJ 0.01 convert a Mojo PubSub server to GraphQL schema
HTML-Selector-Element BARTL 0.95 Search for elements in a HTML::Element DOM tree using CSS selectors
HealthCheck-Diagnostic-Redis GSG v0.0.4 Check for Redis connectivity and operations in HealthCheck
HealthCheck-Diagnostic-SMTP GSG v0.0.3 Verify connectivity to an SMTP mail server
JSON-Karabiner STEVIED 0.003 easy JSON code generaation for Karabiner-Elements
JSON-Schema-Draft201909 ETHER 0.001 Validate data against a schema
Locale-AU NHORNE 0.01 abbreviations for territory and state identification in Australia and vice versa
Locale-Fluent NEVES v0.5.1 A perl implementation of Project Fluent Translations.
Markdown-Contents MIRK 1.2 generate a table of contents from a Markdown file
Math-Giac VVELOX v0.0.1 A perl interface to giac, a CAS(Computer Algebra System)
Module-Generate-YAML LNATION 0.01 Assisting with module generation via YAML.
Module-HideRename PERLANCAR 0.001 Hide modules by renaming them
Mojo-Promise-Limiter SKAJI 0.100 limit outstanding calls to Mojo::Promise
Mojo-Promise-Limitter SKAJI 0.001 limit outstanding calls to Mojo::Promise
MojoX-Date-Local BWISTI 0.02 Mojo::Date, but in my timezone
Mojolicious-Plugin-ContextAuth RENEEB 0.01 Role-based access with context
Mu-Tiny MSTROUT 0.000001 NAE KING! NAE QUIN! NAE CAPTAIN! WE WILLNAE BE FOOLED AGAIN!
Net-API-Stripe-WebHook-Apache JDEGUEST v0.100.1 A Stripe WebHook Implementation using Apache
Net-API-Stripe-WebHook JDEGUEST v0.1.1 A Stripe WebHook Implementation
Net-OAuth2Server ARISTOTLE 0.001 A light, simple, flexible OAuth2 server framework
Net-OAuth2Server-OIDC ARISTOTLE 0.001 An OpenID Connect server on top of Net::OAuth2Server
Net-SNMP-Mixin-CiscoDot1qVlanStatic GAISSMAI 0.01 mixin class for static Cisco vlan info
NewFangle PLICEASE 0.01 Unofficial Perl NewRelic SDK
Nice-Try JDEGUEST v0.1.1 A real Try Catch Block Implementation Using Perl Filter
Number-Textify VAL 20200511 turn number into some string.
OCR-OcrSpace SPAJAI 0.01 Perl Interface to access https://ocr.space/OCRAPI
Object-GMP MICVU 0.001 Moo Role for any object has GMP field
PINE64-GPIO CREDO 0.91 Perl interface to PineA64 and PineA64+ GPIO pins
PINE64-MAX7219 CREDO 0.91
POE-Component-MetaCPAN-Recent BINGOS 1.00 Obtain uploaded CPAN dists via MetaCPAN.
POE-Component-SmokeBox-Recent-HTTP BINGOS 1.54 an extremely minimal HTTP client
PYX-Optimization SKIM 0.01 PYX optimization Perl class.
PerlIO-via-YAML LNATION 0.01 PerlIO layer for YAML
Plack-App-File-PYX SKIM 0.01 Plack PYX file application.
Plack-Handler-Feersum-SS EGOR 0.01 Server::Starter adapter for Feersum Plack handler
RT-Extension-AssetAutoName PUCK 0.02 RT-Extension-AssetAutoName Extension
Regexp-Pattern-Filename-Audio PERLANCAR 0.001 Audio filename
Regexp-Pattern-Filename-Video PERLANCAR 0.001 Video filename
Rewire AWNCORP 0.01 Dependency Injection Container for Perl 5
Rex-Dondley-ProcessTaskArgs STEVIED 0.005 easier Rex task argument handling
Rex-Hook-File-Diff FERKI v0.0.0.1 show diff of changes for files managed by Rex
Role-Declare SNEZ 0.01 declarative parameter and return type checking
RxPerl KARJALA v0.0.1 It's new $module
SU-API-Icinga2-perl THESEAL v2.0.3 REST integration with icinga2
Service-Engine RBUSH 0 a framework for getting things done!
Sort-Sub-by_example PERLANCAR 0.001 Sort by example
Stencil AWNCORP 0.01 Code Generation Tool for Perl 5
Stencil-Source-Awncorp AWNCORP 0.01 Personal Perl 5 Stencil Generators
String-Secret KARUPA 0.01 secret string wrapper to mask secret from logger
Tables PERLANCAR 0.1.0 Module that contains table data
Tables-Locale-US-States PERLANCAR 20200531.0.0 US states
TablesRoles-Standard PERLANCAR 0.001 Standard set of roles for Tables
Test-Metrics-Any PEVANS 0.01 assert that code produces metrics via Metrics::Any
Test2-Plugin-GitHub-Actions-AnnotateFailedTest UTGWKK 0.01 Annotate failed tests with GitHub Actions workflow command
Test2-Roo DJERIUS 1.005 Composable, reusable tests with roles and Moo
Test2-Tools-PerlCritic PLICEASE 0.02 Testing tools to enforce Perl::Critic policies
Util-H2O HAUKEX 0.01 Hash to Object: turns hashrefs into objects with accessors for keys
WG-Status JOEYKELLY 0.04 Perl module to parse WireGuard VPN instances
WordList-CPAN-PAUSEID PERLANCAR 20200504.0.1 CPAN PAUSE ID's
WordList-DBI PERLANCAR 0.001 Wordlist that get its list from a DBI query
WordList-EN-CountryName PERLANCAR 0.050 English country names
WordList-EN-PersonName-Bible PERLANCAR 0.003 All men mentioned in the bible
WordList-HTTP-UserAgentString-Browser-Chrome PERLANCAR 20200501.0.0 Collection of Chrome browser User-Agent strings
WordList-HTTP-UserAgentString-Browser-Firefox PERLANCAR 20200501.0.1 Collection of Firefox browser User-Agent strings
WordList-HTTP-UserAgentString-Browser-Safari PERLANCAR 20200501.0.0 Collection of Safari browser User-Agent strings
WordList-HTTP-UserAgentString-Firefox PERLANCAR 20200501.0.0 Firefox User-Agent strings
WordList-MetaSyntactic-Any PERLANCAR 0.001 Wordlist from any Acme::MetaSyntactic::* module
WordList-PersonName-Bible-EN PERLANCAR 0.001 All men mentioned in the bible
WordListBase-MetaSyntactic PERLANCAR 0.003 Base class for WordList::MetaSyntactic::*
WordListMod PERLANCAR 0.002 Modified wordlist
WordListMod-BinarySearch PERLANCAR 0.002 Provide word_exists() that uses binary search
WordListMod-Bloom PERLANCAR 0.003 Provide word_exists() that uses bloom filter
WordListMod-RandomSeekPick PERLANCAR 0.001 Provide a pick() implementation that random-seeks DATA
WordListMod-ScanPick PERLANCAR 0.001 Provide the default scan pick()
WordListRole-BinarySearch PERLANCAR 0.003 Provide word_exists() that uses binary search
WordListRole-Bloom PERLANCAR 0.004 Provide word_exists() that uses bloom filter
WordListRole-RandomSeekPick PERLANCAR 0.001 Provide a pick() implementation that random-seeks DATA
WordListUtil-CLI PERLANCAR 0.001 Some utility routines related to WordList::* and the CLI
WordLists-EN-PersonName-PopularBabyName-GB_EAW-ONS PERLANCAR 0.002 Popular baby names in England and Wales (from ONS)
WordLists-EN-PersonName-PopularBabyName-US-SSA PERLANCAR 0.003 Popular baby names in the USA (from Social Security Administration)
WordLists-EN-PersonName-PopularBabyNames-GB_EAW-ONS PERLANCAR 0.001 Popular baby names in England and Wales (from ONS)
WordLists-EN-PersonName-PopularBabyNames-US-SSA PERLANCAR 0.002 Popular baby names in the USA (from Social Security Administration)
WordLists-PersonName-PopularBabyNames-GB_EAW-ONS PERLANCAR 0.001 Popular baby names in England and Wales (from ONS)
WordLists-PersonName-PopularBabyNames-US-SSA PERLANCAR 0.001 Popular baby names in the USA (from Social Security Administration)
Youri-Package-RPM-Updater-release PTERJAN v0.6.3 Update RPM packages
lib-hiderename PERLANCAR 0.001 Hide modules by renaming them
md2toc MIRK 1.0 generate a table of contents from a Markdown file
modproxyperlhtml DAROLD 4.0 rewrite HTTP headers and HTML links for reverse proxy usage
service.engine RBUSH 0.42 a framework for getting things done!
standard XSAWYERX 0.000 Standard

Stats

Number of new CPAN distributions this period: 149

Number of authors releasing new CPAN distributions this period: 61

Authors by number of new CPAN distributions this period:

No Author Distributions
1 PERLANCAR 54
2 PLICEASE 8
3 AWNCORP 4
4 ASPOSE 4
5 SKIM 3
6 JDEGUEST 3
7 MICVU 3
8 PEVANS 3
9 GUGOD 3
10 SPAJAI 2
11 LNATION 2
12 ARISTOTLE 2
13 MSTROUT 2
14 STEVIED 2
15 BINGOS 2
16 MERKYS 2
17 GSG 2
18 CREDO 2
19 RBUSH 2
20 SKAJI 2
21 MIRK 2
22 GAISSMAI 1
23 KILINRAX 1
24 ETJ 1
25 NEVES 1
26 BARTL 1
27 JJNAPIORK 1
28 TAKAHITO 1
29 ETHER 1
30 DJERIUS 1
31 AJNN 1
32 VAL 1
33 ASPOSEAPI 1
34 VVELOX 1
35 UTGWKK 1
36 XSAWYERX 1
37 THESEAL 1
38 PREACTION 1
39 JACQUESG 1
40 MMCCLIMON 1
41 SLAFFAN 1
42 ALUCAS 1
43 RENEEB 1
44 DBOOK 1
45 CMANLEY 1
46 SNEZ 1
47 JOEYKELLY 1
48 FERKI 1
49 KARJALA 1
50 NHORNE 1
51 TIMLEGGE 1
52 SHAW 1
53 HAUKEX 1
54 VLADO 1
55 PUCK 1
56 PTERJAN 1
57 KARUPA 1
58 ULIBUCK 1
59 EGOR 1
60 DAROLD 1
61 BWISTI 1