My upgrade of my home server from Debian 11 ("bullseye") to
Debian 12 ("bookworm") went
almost without a hitch. Yesterday I realized that the Postgres data hadn't
been migrated from the old DB to the Debian package of Postgres 15. But
luckily, the good Pg people provide a Debian
package of 9.6 (the version which held my data) for Debian 12.
I could install that one, fire it up, dump all data into SQL, fire up Pg 15
from Debian and import it there. Now I run such an SQL dump daily, just to have
the data available as SQL files.
I wonder if it would be worthwhile for Perl to provide prebuilt
binaries/packages of old Perl versions for current OSes, but then, there are so
many build options that it's not worth the effort in general.
The only use case I see would be to provide an emergency Perl when your
dist-upgrade nuked the system Perl [^1] , but some custom XS modules
or XS modules installed via cpan instead of the package manager
relied on that version. This would reduce the number of build options,
but I'm still not sure if that actually helps anybody.
Maybe simply taking the (Debian) build files for old packages/distributions and
running them for new distributions, with a prefix of /opt/perl5-xx could
already help. People would still need to edit the path of their scripts to
bring things back up.
This only makes sense when also rebuilding all the old CPAN modules
for the new OS version, except under /opt. That's a lot of effort for
little to no gain, except when people really need it.
[^1] : well, not nuked, but replaced with a newer major version that is
not binary compatible
The ambush of WWW::Mechanize::Chrome shows more fallout before the module itself
has been released. The module is one in a long line of browser automation
modules I wrote, starting with WWW::Mechanize::Shell,
reaching is breakthrough with WWW::Mechanize::Firefox
and continuing from WWW::Mechanize::PhantomJS to WWW::Mechanize::Chrome.
In April, Google announced that Google Chrome was finally supporting
headless mode,
at least on Linux and Mac OS. Back then, I noted to myself that
this might be a good time to revisit my rough prototype of
WWW::Mechanize::Chrome. According to Git, I had written a first
prototype of it in 2010 which used the old, raw socket protocol. But
time has progressed and the protocol now uses Websockets. My original
approach used AnyEvent, so I quickly replaced my own approach using
AnyEvent::WebSocket::Client, and the HTTP parts with Future::HTTP.
Do not ask what Perl can do for you, ask what you can do for Perl!
In my effort to bring the new signature back to older versions of Perl, I'm
maintaining Filter::signatures,
a source filter that simply converts the signatures to the equivalent old-style
Perl code. That filter works surprisingly well for its simplicity and has caused
very little in problems.
I don't mind working with Spreadsheets. Much of my work consists of creating
Spreadsheets from SQL queries. Sometimes, the resulting spreadsheet should be
a pivot table, listing some values across the spreadsheet. For most of my
Spreadsheet-generation needs, Querylet
is sufficient, but it cannot create pivot tables.
In my long-term quest to host all of my data on my systems, one of the major
points is to replace the note-taking app Google Keep with something that allows
me to take my notes back to me. I've looked at various open-source apps for
taking and synchronizing notes, but they either feel like overdesigned monsters
that don't fit my workflow (Laverna) or don't have good synchronization from
mobile phone to the server.
While trying to get some more of my modules ready for release, I've been doing
drive-by patches to CPAN modules that I used for various reasons. While I'm not
exactly enthused about throwing a patch with a testcase over the fence, I think
it's still far better to have the problem and solution in some bug tracker
somewhere than having it only on my hard drive.
While putting off working on my Perl Advent Calendar submission, I was instead active in resolving bugs in App::ShaderToy and adding some interesting features. The three major features I added this week are, in order of implementation, loading of bitmap images, hot reloading of code and the feature to make the window stay always on top.
It is incredible how much joy quicker iterations bring me while toying around with shaders, tweaking the parameters to see if I can find new visuals.
The shader is a modification of a shader by Inigo Quilez, hacked up by Weyland.
After the initial rush of success, I spent this week working more on the UI side
of the app, putting off adding support for geometry generation for later.
Prima proves to be a solid UI toolkit and to me it feels closer to using Delphi or Visual Basic, API wise.