Matching simply

A little over ten years ago, when Perl 5.18 was approaching its release date, I released match::simple. This was mostly in response to the smartmatch operator (~~) being deprecated, but also a solution to the incredibly arcane rules for…

Introducing Exporter::Almighty

Consider a simple module like this: package MyApp::Util::Maths; use strict; use warnings; use constant PI => 3.14159265358979; use constant EULER => 2.71828182845905; use base ‘Exporter’; our @EXPORT_OK = qw( PI EULER add ); our %EXPORT_TAGS = ( arithmetic =>…

Prosody vs Synapse

I recently decided to experiment by setting up a Matrix account. And because I always dive head first into things, I of course set up my own Matrix server rather than making an account on a public one. At the same time, I noticed my Jabber/XMPP account had stopped working, so I decided to self-host … Continued

Top Five Disney Villain Songs

Here’s my top five Disney villain songs. I’m only including songs from Walt Disney Animation Studios, so nothing from Pixar, etc. 5. Mother Knows Best — Tangled (2010) “Men with pointy teeth.” It’s a fun song, and quite dark in places. 4. Be Prepared — The Lion King (1994) Jeremy Irons singing with Whoopi Goldberg … Continued

Using Type::Params Effectively

One of the modules bundled with Type::Tiny is Type::Params, a module that allows you to validate subroutine signatures using type constraints. It’s one of the more popular parts of the suite. This article provides a few hints for using…

Setting up WordPress in 2023

Here is my recipe for quickly spinning up a WordPress site with: Plugins and themes managed by PHP Composer, so they can be checked into version control. Several of my favourite plugins installed, including FooGallery and Advanced Custom Fields. A minimal theme combining Roots Sage 10 and Bootstrap 5.2 (at the time of writing this … Continued

Perl Testing in 2023

With my open source work, I’ve historically taken an approach which relies more on integration testing than unit testing, but with some of my newer projects, I’ve tried adopting principles from $paidwork and applying them to my free software. This…