2011.11.24 in #18
6 ways to minimize script startup overhead
Steven Haryanto lists 6 ideas. Some are really good, though I don't agree with all the strategies. I liked the idea of checking the cost of a module using Devel::EndStats (in his pmcost script). Using require for modules that are not used on every run is a clear win. What do you think?
2011.12.22 in #22
Sending a simple email: the current 'modern' way
Steven Haryanto shows how to send e-mail using Email::Sender.
2012.01.05 in #24
Ruby (and other) conference talks - API design talks
Steven Haryanto shared a link to ConFreaks, a web site with lots of recorded conference talks. Most of the conferences are Ruby related.
2012.06.12 in #47
How many of your dists are in Debian?
Steven Haryanto wrote a script using Mojo::DOM to fetch the list of modules an individual author has in Debian. Several others quickly replied with examples how to fetch this information from MetaCPAN.
2012.07.25 in #53
Some lessons in optimizing Org::Parser
What do you do if your notebook is small and slow? Steven Haryanto had to profile his perl scripts to make them run at a reasonable speed. I liked the way the story is told.
2012.07.26 in #53
List of Perl modules comparison articles
In recent years there were several articles comparing modules for specific task. Steven Haryanto created a wiki page with the hope of linking to all such comparison articles.
2012.10.24 in #66
Steven Haryanto describes how he separated the progress reporting from the normal logging mechanism he uses. The result is Progress::Any. So instead of a long and confusing output he had to manually look through, now he can easily see the encountered problems and the current status of a long-running script.
2012.11.27 in #71
Categorizing CPAN modules
Steven Haryanto brings up the age-old problem of difficulty in finding things on CPAN. All kinds of suggestions were raised, mostly around MetaCPAN. Actually there is a site that already provides the possibility to tag modules, but unfortunately CPAN::Forum never got really off the ground and in recent years I did not have any time to work on it.
2012.12.07 in #72
CGI is dead, long live CGI
'CGI might be out of favor for production sites, but for personal and internal applications, it's still the best choice for me.' writes and explains Steven Haryanto. Then in the comment section you'll see how PSGI wins even when you want to run as CGI.
2012.12.28 in #75
Graphing CPAN author's number of distributions over time
Steven Haryanto create a short script using the Meta CPAN API, to fetch the number of distribution of give CPAN developers and then put that on a graph. He is using bare metal API calls getting back JSON structures and then uses Chart::Lines to draw the graph.
2013.09.19 in #113
Breaking users of old versions of a module
An interesting article by Steven Haryanto discussing how to handle backward incompatible changes. One of the approach is to keep the old behavior in a separated module and allow the user to specify which behavior they want to have at the use-time of the module.
2013.10.26 in #118
How I manage my Perl distributions
There are some large Perl-based applications out there that use their own way of packaging and distributing the code, but Steven Haryanto believes it is better to use the same toolchain as is used for CPAN distributions. Even if the application does not end up on CPAN. Even if it is an in-house or other proprietary application. (I tend to agree.) In this article he describes how he handles the process.
2013.11.02 in #119
Things we don't have #1
While CPAN has lots of modules solving many problems (multiple times), there are many problems that are not, or not well solved. Steven Haryanto started to put together a list of tools (libraries) available in other languages but not in Perl. In case you are looking for an problem to work on.
2014.02.21 in #135
Getting a progress report from a running program
Excellent example using signals to ask a program: What are you doing?
2014.04.17 in #143
Introducing fsql and chart
Two command-line utilities to help you slice/dice and visualize data from CSV files on the console.
2014.04.29 in #145
Steven Haryanto brings up an interesting problem. Give a short string, how can you cheaply(!) detect if it is any of the 'standard' or 'approved' formats?
2014.06.06 in #150
Cleaning up your DarkPAN
Steven Haryanto shares a few more tools useful for the scrubbing and clean-up the old releases of one's CPAN account.
2014.07.10 in #155
Benchmarking several ASCII-table-generator modules
Steven Haryanto compares modules producing text-based tables. And yes, some metrics are presented in text-based tables themselves. Yo dawg.
2014.07.11 in #155
Some statistics from Debian package tags
Steven Haryanto gathers some interesting stats on Debian packages and the languages in which they are based.
2014.07.16 in #156
Net:: vs WWW:: vs WebService::
Cache invalidation, naming things, and off-by-one errors. Everybody know those are the two of the thorniest problems we have to deal with. Here, Steven Haryanto open the discussion on what is the sensible namespace to use for web service APIs.
2014.07.22 in #157
Easily add tab completion feature to your CLI program using Getopt::Long::Complete
Steven Haryanto has a new module on CPAN.
2014.07.27 in #157
(?P...) vs (?...)
Steven Haryanto explains how to make your named captures (in regexes) more similar in Perl and Python by using the 'P' prefix.
2014.11.30 in #175
Comparing programmable tab completion in bash, zsh, tcsh, and fish
An overview of what you need to do if you'd like to get your program to provide tab completition in various Unix/Linux shells.
2014.12.01 in #175
Slicing and dicing your JSON (App::jpath)
This is the first episode in perlancar's 2014 Advent Calendar introducing to a selection of 24 modules he wrote in 2014.
2014.12.01 in #176
PERLANCAR's Advent Calendar
Steven Haryanto is being greedy or impressive, or both, describing one of his 2014 modules each day. So far: App::jpath, App::nauniq, DBIx::Diff::Struct, App::datecalc, App::rmhere, File::umask, and App::SetScreensaverTimeout.
2014.12.24 in #179
Perlancar's advent calendar
Safer system() alternative (Sys::Run::Safer), App::chart and Text::chart, Games!
2015.01.10 in #233
A note about String::Flogger and logging in dzil
String::Flogger, used amongst other things by Log::Dispatchouli, does quite a few clever things to make logging messages more DWIMish.
2015.02.01 in #184
What's wrong with Getopt::Long?
Perlancar has started blogging on his own site, and has startd with a series handling command-line arguments. Read part 2 after this first part on Getopt::Long.
2015.03.06 in #189
Towards better Changes
Perlancar shares his thoughts on what should go in the Changes file for your distributions. In particular, don't just say what you changed, but why.
2015.03.16 in #190
Creating API-friendly CLI applications with parseable outputs
perlancar shows how Perinci::CmdLine can take away the drudgery of creating tabular output for command-line tools.
2015.03.20 in #191
Loading module conditionally (and other options)
'use MyModule if $cond;' won't do what you might expect. So what can you do? (... and what < href="http://www.reddit.com/r/perl/comments/2zojah/loading_modules_conditionally_and_other_options/">Redditors think about this.)
2015.03.25 in #192
Interacting with PAUSE using CLI
Perlancar demonstrates his WWW::PAUSE::Simple module and associated
pause script, which can be used to manage your PAUSE account from the command-line.
2015.05.03 in #250
Blogging with org2blog
I think it is a truism that, given enough time, every developer will eventually come up with their own blog platform and template system. If you are an Emacs user, this one might interest you.
2015.09.18 in #217
Using pmless and pmdoc
pmless is a script for paging through the source of a module, and pmman does the same for a module's documentation.
2015.11.28 in #227
Word-mode matching in tab completion
A new completion mode has been added to Perlancar's Complete::Util module, which is used in a number of his tools, including lcpan.
2016.02.11 in #238
Using lcpan to index your DarkPAN
Perlancar describes the lcpan tool, which you can use to manage your own CPAN mirror. There's going to be a series of daily tips on lcpan usage: here's the first.
2016.02.21 in #239
lcpan tips 008: Finding related modules
perlancar shares a cool thing the new mirror tool lcpan can do: it can peruses the documentation of all mirrored modules, and figure out which modules relate to each other based on their conjointed mentions in the same PODs.
2016.03.04 in #241
Fixing prereqs in dist.ini automatically
Perlancar's lint-prereqs script can be used to check whether your distribution has (the right versions of) all the right prereqs, and if you're using Dist::Zilla it can even fix up your
dist.ini. I've never had any problems using
[AutoPrereqs], but I know that not everyone does.
2016.03.04 in #242
Munging lcpan text output with 'td'
Even if you don't use lcpan, this is a nice entry also showcasing cli tools to manipulate and report JSON-like data.
2016.03.27 in #244
Selecting elements of Org document with CSS-selector-like syntax
A new module offering CSS-like selectors for generic structured documents.
2016.05.19 in #252
Using monotonic versioning in Perl
Perlancar has been looking at the Monotonic Versioning Manifesto and thinking about how you might use it for CPAN distributions. It's recently been discussed on Hacker News.
2016.06.10 in #255
Cascade bumping of prerequisite version
2016.08.02 in #263
Checking if a module is installed (without actually loading it)
2016.08.26 in #266
CPAN Weekly: Data::Printer
2016.12.03 in #280
Each day in Advent perlancar is going to describe a different module for parsing command-line arguments.
2016.12.19 in #283
Getopt modules Advent
Perlancar started a series of blog posts to review modules that parse command line options (usually under the Getopt namespace).
2017.07.02 in #310
csv-grep (and App::CSVUtils)
Not caring for my CSV grep script, perlancar has written his own. We have different itches, so scratched them in different ways, as is traditional on CPAN.
2017.07.13 in #312
After the Fast comes the Feast that can be used to make something Fast.
2018.05.08 in #355
How to find out the dependencies list of a CPAN module or your code-base? What can you do if your code has a huge list of dependencies? Inlining? lumping? clumping? What is that and? How does it work? What problems arise?
If you are not yet subscribed, you can do it now. Free of charge:
Just ONE e-mail each Monday. Easy to unsubscribe. No spam. Your e-mail address is safe.
This newsletter is about the Perl Programming languages.