Recent Posts

Detective Work with perlimports

published on
Today I was working on a test which uses Test::WWW::Mechanize. I was looking at the source of the text_contains method, which currently looks like: sub text_contains { my $self = shift; my $str = shift; my $desc = shift || qq{Text contains "$str"}; local $Test::Builder::Level = $Test::Builder::Level + 1; if ( ref($str) ) { return $TB->ok( 0, 'Test::WWW::Mechanize->text_contains called incorrectly. It requires a scalar, not a reference.' ); } return contains_string( $self->text, $str, $desc ); } I was interested in the return value, so I grepped the file for sub contains_string. Read More...

Improving prove with Preview Windows

published on
Last month, I talked about how to add tab completion to a CLI program, using fzf. Next we talked about a more generic solution which adds a preview window to a file search. Today we will look at how to combine the knowledge from these two posts. What we want to do is have our custom completion for the prove CLI, but with a preview window. The solution looks like this: Read More...

Adding a Preview Window to Your Tab Completion

published on
A few days ago, I talked about how to add tab completion to a CLI program, using fzf. As usual, there’s more than one way to do it (TIMTOWDI) and I’d like to look at another approach which also uses fzf. One of the neat things about fzf is that it can provide you with configurable preview window. The following snippet will require fzf and bat, which is another handy tool which I encourage you to explore. Read More...

Adding Tab Completion to Your Favourite CLI Programs

published on
I like to find what I need quickly, so I make heavy use of tab completion at the command line. Lately, I’ve been using fzf more and more to do this. It’s a wonderful tool. I won’t go in depth about fzf here, but if you haven’t checked it out, please do. I think it’s well worth it. What I want to do today is to explain how to harness the power of fzf to add tab completion to an arbitrary command line program. Read More...

CPAN Bus Factor

published on
[The following post is the result of a collaboration with Neil Bowers] CPAN Bus Factor Perhaps you’ve noticed a new metric when browsing MetaCPAN? What is “bus factor”? Wikipedia defines “bus factor” as a measurement of the risk resulting from information and capabilities not being shared among team members, derived from the phrase “in case they get hit by a bus.” For CPAN our definition is “a measurement of how risky it might be to start relying on a CPAN module, which might not be actively maintained”. Read More...


published on
Over the past 6 months or so, I’ve been working on a project to port goimports (or some version of it) to Perl. By now I’ve tested it on our Perl codebase at $work, on MetaCPAN and also some CPAN modules. It’s now at a state where I can say it’s getting to be a useful tool. You can find perlimports on MetaCPAN and GitHub. For a more thorough introduction, see my talk from the Perl and Raku Conference this past week. Read More...

Creating a Twitter List of CPAN Authors

published on
Recently I found a great little Twitter command line tool called t. It does a lot of useful things, including building and editing Twitter lists. For example, with the following commands we can: create a Twitter list called “my-list-of-people” add the @metacpan account to the list display the accounts which are now in the list we’ve just created I thought it would be fun to create a Twitter list of CPAN authors using some of the data in the MetaCPAN API. Read More...

Managing Your Travis CI Config Files with App::CISetup

published on
This post is brought to you by ServerCentral Turing Group in Chicago, a Platinum level sponsor of the meta::hack conference in 2018. For the past 3 years we’ve had the privilege of having meta::hack at the ServerCentral office space in Chicago. ServerCentral Turing Group (SCTG) is a trusted provider of AWS consulting, managed clouds, cloud-native software development, and global data center services for startups, enterprises, and Fortune 500 companies. Managing Your Travis CI Config Files with App::CISetup If you write software, you (hopefully) write tests. Read More...


Bat (2)

Cpan (1)

Fd (3)

Fzf (3)

Go (2)

Metacpan (15)

Perl (35)

Perlimports (1)

Programming (25)

Prove (3)

Tab Completion (3)

Testing (3)